(function (_, kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core, kotlin_kotlin) {
  'use strict';
  //region block: imports
  var imul = Math.imul;
  var EmptySerializersModule = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.b3;
  var protoOf = kotlin_kotlin.$_$.uc;
  var objectMeta = kotlin_kotlin.$_$.tc;
  var setMetadataFor = kotlin_kotlin.$_$.vc;
  var Unit_instance = kotlin_kotlin.$_$.m5;
  var StringFormat = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.n3;
  var classMeta = kotlin_kotlin.$_$.jb;
  var VOID = kotlin_kotlin.$_$.f;
  var toString = kotlin_kotlin.$_$.zc;
  var IllegalArgumentException_init_$Create$ = kotlin_kotlin.$_$.u1;
  var charSequenceLength = kotlin_kotlin.$_$.hb;
  var charSequenceGet = kotlin_kotlin.$_$.gb;
  var _Char___init__impl__6a9atx = kotlin_kotlin.$_$.u2;
  var equals = kotlin_kotlin.$_$.mb;
  var SerializationException_init_$Create$ = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.d;
  var SEALED_getInstance = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.h;
  var buildSerialDescriptor = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.v1;
  var getKClassFromExpression = kotlin_kotlin.$_$.d;
  var serializerOrNull = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.r3;
  var THROW_CCE = kotlin_kotlin.$_$.fi;
  var KSerializer = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.i3;
  var isInterface = kotlin_kotlin.$_$.ec;
  var Decoder = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.g2;
  var CompositeDecoder = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.d2;
  var interfaceMeta = kotlin_kotlin.$_$.vb;
  var StringBuilder_init_$Create$ = kotlin_kotlin.$_$.f1;
  var hashCode = kotlin_kotlin.$_$.ub;
  var joinToString = kotlin_kotlin.$_$.z7;
  var Map = kotlin_kotlin.$_$.y5;
  var IntCompanionObject_instance = kotlin_kotlin.$_$.y4;
  var numberRangeToNumber = kotlin_kotlin.$_$.mc;
  var ClosedRange = kotlin_kotlin.$_$.ed;
  var contains = kotlin_kotlin.$_$.ld;
  var LazyThreadSafetyMode_PUBLICATION_getInstance = kotlin_kotlin.$_$.i;
  var lazy = kotlin_kotlin.$_$.dj;
  var SerializerFactory = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.v2;
  var List = kotlin_kotlin.$_$.w5;
  var getBooleanHashCode = kotlin_kotlin.$_$.pb;
  var getStringHashCode = kotlin_kotlin.$_$.tb;
  var NumberFormatException_init_$Create$ = kotlin_kotlin.$_$.j2;
  var toDouble = kotlin_kotlin.$_$.pg;
  var IllegalStateException_init_$Create$ = kotlin_kotlin.$_$.a2;
  var StringCompanionObject_instance = kotlin_kotlin.$_$.a5;
  var serializer = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.b1;
  var InlinePrimitiveDescriptor = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.r2;
  var STRING_getInstance = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.j;
  var MapSerializer = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.y;
  var SerialDescriptor = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.q1;
  var ENUM_getInstance = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.l;
  var ListSerializer = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.x;
  var PrimitiveSerialDescriptor = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.l1;
  var toLongOrNull = kotlin_kotlin.$_$.ug;
  var toULongOrNull = kotlin_kotlin.$_$.bh;
  var ULong = kotlin_kotlin.$_$.oi;
  var Companion_getInstance = kotlin_kotlin.$_$.k5;
  var serializer_0 = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.g1;
  var _ULong___get_data__impl__fggpzb = kotlin_kotlin.$_$.b4;
  var toDoubleOrNull = kotlin_kotlin.$_$.og;
  var toBooleanStrictOrNull = kotlin_kotlin.$_$.kg;
  var lazy_0 = kotlin_kotlin.$_$.ej;
  var get_isNullable = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.o1;
  var get_isInline = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.n1;
  var get_annotations = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.m1;
  var KProperty1 = kotlin_kotlin.$_$.td;
  var getPropertyCallableRef = kotlin_kotlin.$_$.sb;
  var Encoder = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.k2;
  var CompositeEncoder = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.e2;
  var toLong = kotlin_kotlin.$_$.xc;
  var _UInt___init__impl__l7qpdl = kotlin_kotlin.$_$.q3;
  var UInt__toString_impl_dbgl21 = kotlin_kotlin.$_$.t3;
  var _ULong___init__impl__c78o9k = kotlin_kotlin.$_$.a4;
  var ULong__toString_impl_f9au7k = kotlin_kotlin.$_$.c4;
  var _UByte___init__impl__g9hnc4 = kotlin_kotlin.$_$.h3;
  var UByte__toString_impl_v72jg = kotlin_kotlin.$_$.j3;
  var _UShort___init__impl__jigrne = kotlin_kotlin.$_$.j4;
  var UShort__toString_impl_edaoee = kotlin_kotlin.$_$.l4;
  var ElementMarker = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.o2;
  var captureStack = kotlin_kotlin.$_$.db;
  var SerializationException = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.l3;
  var SerializationException_init_$Init$ = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.c;
  var charSequenceSubSequence = kotlin_kotlin.$_$.ib;
  var coerceAtLeast = kotlin_kotlin.$_$.hd;
  var coerceAtMost = kotlin_kotlin.$_$.jd;
  var Companion_instance = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.q;
  var CLASS_getInstance = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.m;
  var LinkedHashMap_init_$Create$ = kotlin_kotlin.$_$.v;
  var ArrayList_init_$Create$ = kotlin_kotlin.$_$.m;
  var singleOrNull = kotlin_kotlin.$_$.k9;
  var emptyMap = kotlin_kotlin.$_$.j7;
  var getValue = kotlin_kotlin.$_$.t7;
  var fillArrayVal = kotlin_kotlin.$_$.ob;
  var copyOf = kotlin_kotlin.$_$.c7;
  var copyOf_0 = kotlin_kotlin.$_$.d7;
  var LIST_getInstance = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.n;
  var DeepRecursiveFunction = kotlin_kotlin.$_$.qh;
  var invoke = kotlin_kotlin.$_$.zi;
  var CoroutineImpl = kotlin_kotlin.$_$.ta;
  var DeepRecursiveScope = kotlin_kotlin.$_$.rh;
  var Unit = kotlin_kotlin.$_$.ri;
  var get_COROUTINE_SUSPENDED = kotlin_kotlin.$_$.fa;
  var AbstractPolymorphicSerializer = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.m2;
  var getKClass = kotlin_kotlin.$_$.e;
  var findPolymorphicSerializer = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.o3;
  var ensureNotNull = kotlin_kotlin.$_$.yi;
  var DeserializationStrategy = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.h3;
  var SealedClassSerializer = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.k3;
  var jsonCachedSerialNames = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.x2;
  var ENUM = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.r1;
  var PrimitiveKind = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.k1;
  var PolymorphicKind = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.j1;
  var CONTEXTUAL_getInstance = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.k;
  var MAP_getInstance = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.o;
  var contextual = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.d3;
  var SerializersModuleCollector = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.e3;
  var AbstractDecoder = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.z1;
  var substringBefore = kotlin_kotlin.$_$.hg;
  var removeSuffix = kotlin_kotlin.$_$.qf;
  var substringAfter = kotlin_kotlin.$_$.cg;
  var contains_0 = kotlin_kotlin.$_$.oe;
  var plus = kotlin_kotlin.$_$.gj;
  var MissingFieldException = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.j3;
  var IllegalArgumentException = kotlin_kotlin.$_$.vh;
  var isFinite = kotlin_kotlin.$_$.bj;
  var isFinite_0 = kotlin_kotlin.$_$.aj;
  var toUInt = kotlin_kotlin.$_$.ah;
  var _UInt___get_data__impl__f0vqqw = kotlin_kotlin.$_$.s3;
  var toULong = kotlin_kotlin.$_$.ch;
  var toUByte = kotlin_kotlin.$_$.zg;
  var _UByte___get_data__impl__jof9qr = kotlin_kotlin.$_$.i3;
  var toUShort = kotlin_kotlin.$_$.dh;
  var _UShort___get_data__impl__g0245 = kotlin_kotlin.$_$.k4;
  var objectCreate = kotlin_kotlin.$_$.sc;
  var AbstractEncoder = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.a2;
  var findPolymorphicSerializer_0 = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.p3;
  var toString_0 = kotlin_kotlin.$_$.c3;
  var Companion_getInstance_0 = kotlin_kotlin.$_$.j5;
  var serializer_1 = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.d1;
  var Companion_getInstance_1 = kotlin_kotlin.$_$.i5;
  var serializer_2 = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.f1;
  var Companion_getInstance_2 = kotlin_kotlin.$_$.l5;
  var serializer_3 = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.c1;
  var setOf = kotlin_kotlin.$_$.i9;
  var Char__toInt_impl_vasixd = kotlin_kotlin.$_$.b3;
  var numberToChar = kotlin_kotlin.$_$.oc;
  var equals_0 = kotlin_kotlin.$_$.we;
  var noWhenBranchMatchedException = kotlin_kotlin.$_$.fj;
  var NamedValueDecoder = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.t2;
  var ByteCompanionObject_instance = kotlin_kotlin.$_$.v4;
  var toByte = kotlin_kotlin.$_$.wc;
  var ShortCompanionObject_instance = kotlin_kotlin.$_$.z4;
  var toShort = kotlin_kotlin.$_$.yc;
  var single = kotlin_kotlin.$_$.vf;
  var Char = kotlin_kotlin.$_$.nh;
  var emptySet = kotlin_kotlin.$_$.k7;
  var plus_0 = kotlin_kotlin.$_$.t8;
  var toInt = kotlin_kotlin.$_$.sg;
  var toList = kotlin_kotlin.$_$.r9;
  var enumEntries = kotlin_kotlin.$_$.xa;
  var Enum = kotlin_kotlin.$_$.sh;
  var getContextualDescriptor = kotlin_org_jetbrains_kotlinx_kotlinx_serialization_core.$_$.x1;
  var last = kotlin_kotlin.$_$.g8;
  var removeLast = kotlin_kotlin.$_$.d9;
  var lastIndexOf = kotlin_kotlin.$_$.mf;
  var Long = kotlin_kotlin.$_$.yh;
  var Char__minus_impl_a2frrh = kotlin_kotlin.$_$.x2;
  var Companion_getInstance_3 = kotlin_kotlin.$_$.g5;
  var numberToLong = kotlin_kotlin.$_$.rc;
  var charArray = kotlin_kotlin.$_$.fb;
  var indexOf = kotlin_kotlin.$_$.bf;
  var StringBuilder_init_$Create$_0 = kotlin_kotlin.$_$.e1;
  var HashMap_init_$Create$ = kotlin_kotlin.$_$.o;
  //endregion
  //region block: pre-declaration
  setMetadataFor(Json, 'Json', classMeta, VOID, [StringFormat]);
  setMetadataFor(Default, 'Default', objectMeta, Json);
  setMetadataFor(JsonBuilder, 'JsonBuilder', classMeta);
  setMetadataFor(JsonImpl, 'JsonImpl', classMeta, Json);
  setMetadataFor(JsonClassDiscriminator, 'JsonClassDiscriminator', classMeta);
  setMetadataFor(JsonNames, 'JsonNames', classMeta);
  setMetadataFor(JsonConfiguration, 'JsonConfiguration', classMeta);
  setMetadataFor(JsonContentPolymorphicSerializer, 'JsonContentPolymorphicSerializer', classMeta, VOID, [KSerializer]);
  setMetadataFor(JsonDecoder, 'JsonDecoder', interfaceMeta, VOID, [Decoder, CompositeDecoder]);
  setMetadataFor(Companion, 'Companion', objectMeta);
  setMetadataFor(JsonElement, 'JsonElement', classMeta, VOID, VOID, VOID, VOID, {0: JsonElementSerializer_getInstance});
  setMetadataFor(Companion_0, 'Companion', objectMeta);
  setMetadataFor(JsonPrimitive, 'JsonPrimitive', classMeta, JsonElement, VOID, VOID, VOID, {0: JsonPrimitiveSerializer_getInstance});
  setMetadataFor(Companion_1, 'Companion', objectMeta);
  setMetadataFor(JsonObject, 'JsonObject', classMeta, JsonElement, [JsonElement, Map], VOID, VOID, {0: JsonObjectSerializer_getInstance});
  setMetadataFor(JsonNull, 'JsonNull', objectMeta, JsonPrimitive, [JsonPrimitive, SerializerFactory], VOID, VOID, {0: JsonNull_getInstance});
  setMetadataFor(Companion_2, 'Companion', objectMeta);
  setMetadataFor(JsonArray, 'JsonArray', classMeta, JsonElement, [JsonElement, List], VOID, VOID, {0: JsonArraySerializer_getInstance});
  setMetadataFor(JsonLiteral, 'JsonLiteral', classMeta, JsonPrimitive);
  setMetadataFor(JsonElementSerializer, 'JsonElementSerializer', objectMeta, VOID, [KSerializer]);
  setMetadataFor(JsonPrimitiveSerializer, 'JsonPrimitiveSerializer', objectMeta, VOID, [KSerializer]);
  setMetadataFor(JsonObjectDescriptor, 'JsonObjectDescriptor', objectMeta, VOID, [SerialDescriptor]);
  setMetadataFor(JsonObjectSerializer, 'JsonObjectSerializer', objectMeta, VOID, [KSerializer]);
  setMetadataFor(JsonNullSerializer, 'JsonNullSerializer', objectMeta, VOID, [KSerializer]);
  setMetadataFor(JsonArrayDescriptor, 'JsonArrayDescriptor', objectMeta, VOID, [SerialDescriptor]);
  setMetadataFor(JsonArraySerializer, 'JsonArraySerializer', objectMeta, VOID, [KSerializer]);
  setMetadataFor(JsonLiteralSerializer, 'JsonLiteralSerializer', objectMeta, VOID, [KSerializer]);
  setMetadataFor(defer$1, VOID, classMeta, VOID, [SerialDescriptor]);
  setMetadataFor(JsonEncoder, 'JsonEncoder', interfaceMeta, VOID, [Encoder, CompositeEncoder]);
  setMetadataFor(Composer, 'Composer', classMeta);
  setMetadataFor(ComposerForUnsignedNumbers, 'ComposerForUnsignedNumbers', classMeta, Composer);
  setMetadataFor(ComposerForUnquotedLiterals, 'ComposerForUnquotedLiterals', classMeta, Composer);
  setMetadataFor(ComposerWithPrettyPrint, 'ComposerWithPrettyPrint', classMeta, Composer);
  setMetadataFor(JsonElementMarker, 'JsonElementMarker', classMeta);
  setMetadataFor(JsonException, 'JsonException', classMeta, SerializationException);
  setMetadataFor(JsonDecodingException, 'JsonDecodingException', classMeta, JsonException);
  setMetadataFor(JsonEncodingException, 'JsonEncodingException', classMeta, JsonException);
  setMetadataFor(Tombstone, 'Tombstone', objectMeta);
  setMetadataFor(JsonPath, 'JsonPath', classMeta, VOID, VOID, JsonPath);
  setMetadataFor(JsonTreeReader$readDeepRecursive$slambda, 'JsonTreeReader$readDeepRecursive$slambda', classMeta, CoroutineImpl, VOID, VOID, VOID, VOID, [2]);
  setMetadataFor($readObjectCOROUTINE$0, '$readObjectCOROUTINE$0', classMeta, CoroutineImpl);
  setMetadataFor(JsonTreeReader, 'JsonTreeReader', classMeta, VOID, VOID, VOID, VOID, VOID, [0]);
  setMetadataFor(PolymorphismValidator, 'PolymorphismValidator', classMeta, VOID, [SerializersModuleCollector]);
  setMetadataFor(Key, 'Key', classMeta, VOID, VOID, Key);
  setMetadataFor(DescriptorSchemaCache, 'DescriptorSchemaCache', classMeta, VOID, VOID, DescriptorSchemaCache);
  setMetadataFor(DiscriminatorHolder, 'DiscriminatorHolder', classMeta);
  setMetadataFor(StreamingJsonDecoder, 'StreamingJsonDecoder', classMeta, AbstractDecoder, [JsonDecoder, AbstractDecoder]);
  setMetadataFor(JsonDecoderForUnsignedTypes, 'JsonDecoderForUnsignedTypes', classMeta, AbstractDecoder);
  setMetadataFor(StreamingJsonEncoder, 'StreamingJsonEncoder', classMeta, AbstractEncoder, [JsonEncoder, AbstractEncoder]);
  setMetadataFor(AbstractJsonTreeDecoder, 'AbstractJsonTreeDecoder', classMeta, NamedValueDecoder, [NamedValueDecoder, JsonDecoder]);
  setMetadataFor(JsonTreeDecoder, 'JsonTreeDecoder', classMeta, AbstractJsonTreeDecoder);
  setMetadataFor(JsonTreeListDecoder, 'JsonTreeListDecoder', classMeta, AbstractJsonTreeDecoder);
  setMetadataFor(JsonPrimitiveDecoder, 'JsonPrimitiveDecoder', classMeta, AbstractJsonTreeDecoder);
  setMetadataFor(JsonTreeMapDecoder, 'JsonTreeMapDecoder', classMeta, JsonTreeDecoder);
  setMetadataFor(WriteMode, 'WriteMode', classMeta, Enum);
  setMetadataFor(AbstractJsonLexer, 'AbstractJsonLexer', classMeta);
  setMetadataFor(CharMappings, 'CharMappings', objectMeta);
  setMetadataFor(StringJsonLexer, 'StringJsonLexer', classMeta, AbstractJsonLexer);
  setMetadataFor(JsonToStringWriter, 'JsonToStringWriter', classMeta, VOID, VOID, JsonToStringWriter);
  //endregion
  function Default() {
    Default_instance = this;
    Json.call(this, new JsonConfiguration(), EmptySerializersModule());
  }
  var Default_instance;
  function Default_getInstance() {
    if (Default_instance == null)
      new Default();
    return Default_instance;
  }
  function Json(configuration, serializersModule) {
    Default_getInstance();
    this.q4v_1 = configuration;
    this.r4v_1 = serializersModule;
    this.s4v_1 = new DescriptorSchemaCache();
  }
  protoOf(Json).y4b = function () {
    return this.r4v_1;
  };
  protoOf(Json).w4b = function (serializer, value) {
    var result = new JsonToStringWriter();
    try {
      encodeByWriter(this, result, serializer, value);
      return result.toString();
    }finally {
      result.qy();
    }
  };
  protoOf(Json).x4b = function (deserializer, string) {
    var lexer = new StringJsonLexer(string);
    var input = new StreamingJsonDecoder(this, WriteMode_OBJ_getInstance(), lexer, deserializer.v4a(), null);
    var result = input.m4e(deserializer);
    lexer.h4w();
    return result;
  };
  protoOf(Json).t4v = function (deserializer, element) {
    return readJson(this, element, deserializer);
  };
  function Json_0(from, builderAction) {
    from = from === VOID ? Default_getInstance() : from;
    var builder = new JsonBuilder(from);
    builderAction(builder);
    var conf = builder.f3();
    return new JsonImpl(conf, builder.x4w_1);
  }
  function JsonBuilder(json) {
    this.i4w_1 = json.q4v_1.y4w_1;
    this.j4w_1 = json.q4v_1.d4x_1;
    this.k4w_1 = json.q4v_1.z4w_1;
    this.l4w_1 = json.q4v_1.a4x_1;
    this.m4w_1 = json.q4v_1.b4x_1;
    this.n4w_1 = json.q4v_1.c4x_1;
    this.o4w_1 = json.q4v_1.e4x_1;
    this.p4w_1 = json.q4v_1.f4x_1;
    this.q4w_1 = json.q4v_1.g4x_1;
    this.r4w_1 = json.q4v_1.h4x_1;
    this.s4w_1 = json.q4v_1.i4x_1;
    this.t4w_1 = json.q4v_1.j4x_1;
    this.u4w_1 = json.q4v_1.k4x_1;
    this.v4w_1 = json.q4v_1.l4x_1;
    this.w4w_1 = json.q4v_1.m4x_1;
    this.x4w_1 = json.y4b();
  }
  protoOf(JsonBuilder).f3 = function () {
    if (this.q4w_1) {
      // Inline function 'kotlin.require' call
      // Inline function 'kotlin.contracts.contract' call
      if (!(this.r4w_1 === 'type')) {
        // Inline function 'kotlinx.serialization.json.JsonBuilder.build.<anonymous>' call
        var message = 'Class discriminator should not be specified when array polymorphism is specified';
        throw IllegalArgumentException_init_$Create$(toString(message));
      }
    }
    if (!this.n4w_1) {
      // Inline function 'kotlin.require' call
      // Inline function 'kotlin.contracts.contract' call
      if (!(this.o4w_1 === '    ')) {
        // Inline function 'kotlinx.serialization.json.JsonBuilder.build.<anonymous>' call
        var message_0 = 'Indent should not be specified when default printing mode is used';
        throw IllegalArgumentException_init_$Create$(toString(message_0));
      }
    } else if (!(this.o4w_1 === '    ')) {
      var tmp$ret$3;
      $l$block: {
        // Inline function 'kotlin.text.all' call
        var indexedObject = this.o4w_1;
        var inductionVariable = 0;
        while (inductionVariable < charSequenceLength(indexedObject)) {
          var element = charSequenceGet(indexedObject, inductionVariable);
          inductionVariable = inductionVariable + 1 | 0;
          // Inline function 'kotlinx.serialization.json.JsonBuilder.build.<anonymous>' call
          if (!(((element === _Char___init__impl__6a9atx(32) ? true : element === _Char___init__impl__6a9atx(9)) ? true : element === _Char___init__impl__6a9atx(13)) ? true : element === _Char___init__impl__6a9atx(10))) {
            tmp$ret$3 = false;
            break $l$block;
          }
        }
        tmp$ret$3 = true;
      }
      var allWhitespaces = tmp$ret$3;
      // Inline function 'kotlin.require' call
      // Inline function 'kotlin.contracts.contract' call
      if (!allWhitespaces) {
        // Inline function 'kotlinx.serialization.json.JsonBuilder.build.<anonymous>' call
        var message_1 = 'Only whitespace, tab, newline and carriage return are allowed as pretty print symbols. Had ' + this.o4w_1;
        throw IllegalArgumentException_init_$Create$(toString(message_1));
      }
    }
    return new JsonConfiguration(this.i4w_1, this.k4w_1, this.l4w_1, this.m4w_1, this.n4w_1, this.j4w_1, this.o4w_1, this.p4w_1, this.q4w_1, this.r4w_1, this.s4w_1, this.t4w_1, this.u4w_1, this.v4w_1, this.w4w_1);
  };
  function validateConfiguration($this) {
    if (equals($this.y4b(), EmptySerializersModule()))
      return Unit_instance;
    var collector = new PolymorphismValidator($this.q4v_1.g4x_1, $this.q4v_1.h4x_1);
    $this.y4b().s4u(collector);
  }
  function JsonImpl(configuration, module_0) {
    Json.call(this, configuration, module_0);
    validateConfiguration(this);
  }
  function JsonClassDiscriminator() {
  }
  function JsonNames() {
  }
  function JsonConfiguration(encodeDefaults, ignoreUnknownKeys, isLenient, allowStructuredMapKeys, prettyPrint, explicitNulls, prettyPrintIndent, coerceInputValues, useArrayPolymorphism, classDiscriminator, allowSpecialFloatingPointValues, useAlternativeNames, namingStrategy, decodeEnumsCaseInsensitive, allowTrailingComma) {
    encodeDefaults = encodeDefaults === VOID ? false : encodeDefaults;
    ignoreUnknownKeys = ignoreUnknownKeys === VOID ? false : ignoreUnknownKeys;
    isLenient = isLenient === VOID ? false : isLenient;
    allowStructuredMapKeys = allowStructuredMapKeys === VOID ? false : allowStructuredMapKeys;
    prettyPrint = prettyPrint === VOID ? false : prettyPrint;
    explicitNulls = explicitNulls === VOID ? true : explicitNulls;
    prettyPrintIndent = prettyPrintIndent === VOID ? '    ' : prettyPrintIndent;
    coerceInputValues = coerceInputValues === VOID ? false : coerceInputValues;
    useArrayPolymorphism = useArrayPolymorphism === VOID ? false : useArrayPolymorphism;
    classDiscriminator = classDiscriminator === VOID ? 'type' : classDiscriminator;
    allowSpecialFloatingPointValues = allowSpecialFloatingPointValues === VOID ? false : allowSpecialFloatingPointValues;
    useAlternativeNames = useAlternativeNames === VOID ? true : useAlternativeNames;
    namingStrategy = namingStrategy === VOID ? null : namingStrategy;
    decodeEnumsCaseInsensitive = decodeEnumsCaseInsensitive === VOID ? false : decodeEnumsCaseInsensitive;
    allowTrailingComma = allowTrailingComma === VOID ? false : allowTrailingComma;
    this.y4w_1 = encodeDefaults;
    this.z4w_1 = ignoreUnknownKeys;
    this.a4x_1 = isLenient;
    this.b4x_1 = allowStructuredMapKeys;
    this.c4x_1 = prettyPrint;
    this.d4x_1 = explicitNulls;
    this.e4x_1 = prettyPrintIndent;
    this.f4x_1 = coerceInputValues;
    this.g4x_1 = useArrayPolymorphism;
    this.h4x_1 = classDiscriminator;
    this.i4x_1 = allowSpecialFloatingPointValues;
    this.j4x_1 = useAlternativeNames;
    this.k4x_1 = namingStrategy;
    this.l4x_1 = decodeEnumsCaseInsensitive;
    this.m4x_1 = allowTrailingComma;
  }
  protoOf(JsonConfiguration).toString = function () {
    return 'JsonConfiguration(encodeDefaults=' + this.y4w_1 + ', ignoreUnknownKeys=' + this.z4w_1 + ', isLenient=' + this.a4x_1 + ', ' + ('allowStructuredMapKeys=' + this.b4x_1 + ', prettyPrint=' + this.c4x_1 + ', explicitNulls=' + this.d4x_1 + ', ') + ("prettyPrintIndent='" + this.e4x_1 + "', coerceInputValues=" + this.f4x_1 + ', useArrayPolymorphism=' + this.g4x_1 + ', ') + ("classDiscriminator='" + this.h4x_1 + "', allowSpecialFloatingPointValues=" + this.i4x_1 + ', useAlternativeNames=' + this.j4x_1 + ', ') + ('namingStrategy=' + this.k4x_1 + ', decodeEnumsCaseInsensitive=' + this.l4x_1 + ', allowTrailingComma=' + this.m4x_1 + ')');
  };
  function throwSubtypeNotRegistered($this, subClass, baseClass) {
    var tmp0_elvis_lhs = subClass.f7();
    var subClassName = tmp0_elvis_lhs == null ? '' + subClass : tmp0_elvis_lhs;
    var scope = "in the scope of '" + baseClass.f7() + "'";
    throw SerializationException_init_$Create$("Class '" + subClassName + "' is not registered for polymorphic serialization " + scope + '.\n' + "Mark the base class as 'sealed' or register the serializer explicitly.");
  }
  function JsonContentPolymorphicSerializer(baseClass) {
    this.n4x_1 = baseClass;
    this.o4x_1 = buildSerialDescriptor('JsonContentPolymorphicSerializer<' + this.n4x_1.f7() + '>', SEALED_getInstance(), []);
  }
  protoOf(JsonContentPolymorphicSerializer).v4a = function () {
    return this.o4x_1;
  };
  protoOf(JsonContentPolymorphicSerializer).l4b = function (encoder, value) {
    var tmp0_elvis_lhs = encoder.y4b().n4g(this.n4x_1, value);
    var tmp1_elvis_lhs = tmp0_elvis_lhs == null ? serializerOrNull(getKClassFromExpression(value)) : tmp0_elvis_lhs;
    var tmp;
    if (tmp1_elvis_lhs == null) {
      throwSubtypeNotRegistered(this, getKClassFromExpression(value), this.n4x_1);
    } else {
      tmp = tmp1_elvis_lhs;
    }
    var actualSerializer = tmp;
    (isInterface(actualSerializer, KSerializer) ? actualSerializer : THROW_CCE()).w4a(encoder, value);
  };
  protoOf(JsonContentPolymorphicSerializer).w4a = function (encoder, value) {
    return this.l4b(encoder, !(value == null) ? value : THROW_CCE());
  };
  protoOf(JsonContentPolymorphicSerializer).x4a = function (decoder) {
    var input = asJsonDecoder(decoder);
    var tree = input.p4x();
    var tmp = this.q4x(tree);
    var actualSerializer = isInterface(tmp, KSerializer) ? tmp : THROW_CCE();
    return input.r4x().t4v(actualSerializer, tree);
  };
  function JsonDecoder() {
  }
  function get_jsonUnquotedLiteralDescriptor() {
    _init_properties_JsonElement_kt__7cbdc2();
    return jsonUnquotedLiteralDescriptor;
  }
  var jsonUnquotedLiteralDescriptor;
  function Companion() {
  }
  protoOf(Companion).s4x = function () {
    return JsonElementSerializer_getInstance();
  };
  var Companion_instance_0;
  function Companion_getInstance_4() {
    return Companion_instance_0;
  }
  function JsonElement() {
  }
  function Companion_0() {
  }
  var Companion_instance_1;
  function Companion_getInstance_5() {
    return Companion_instance_1;
  }
  function JsonPrimitive() {
    JsonElement.call(this);
  }
  protoOf(JsonPrimitive).toString = function () {
    return this.x3e();
  };
  function Companion_1() {
  }
  var Companion_instance_2;
  function Companion_getInstance_6() {
    return Companion_instance_2;
  }
  function JsonObject$toString$lambda(_name_for_destructuring_parameter_0__wldtmu) {
    // Inline function 'kotlin.collections.component1' call
    var k = _name_for_destructuring_parameter_0__wldtmu.s2();
    // Inline function 'kotlin.collections.component2' call
    var v = _name_for_destructuring_parameter_0__wldtmu.t2();
    // Inline function 'kotlin.text.buildString' call
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlin.apply' call
    var this_0 = StringBuilder_init_$Create$();
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlinx.serialization.json.JsonObject.toString.<anonymous>.<anonymous>' call
    printQuoted(this_0, k);
    this_0.z5(_Char___init__impl__6a9atx(58));
    this_0.x5(v);
    return this_0.toString();
  }
  function JsonObject(content) {
    JsonElement.call(this);
    this.t4x_1 = content;
  }
  protoOf(JsonObject).q2 = function () {
    return this.t4x_1.q2();
  };
  protoOf(JsonObject).o2 = function () {
    return this.t4x_1.o2();
  };
  protoOf(JsonObject).u = function () {
    return this.t4x_1.u();
  };
  protoOf(JsonObject).p2 = function () {
    return this.t4x_1.p2();
  };
  protoOf(JsonObject).q2o = function (key) {
    return this.t4x_1.r(key);
  };
  protoOf(JsonObject).r = function (key) {
    if (!(!(key == null) ? typeof key === 'string' : false))
      return false;
    return this.q2o((!(key == null) ? typeof key === 'string' : false) ? key : THROW_CCE());
  };
  protoOf(JsonObject).ba = function (key) {
    return this.t4x_1.q(key);
  };
  protoOf(JsonObject).q = function (key) {
    if (!(!(key == null) ? typeof key === 'string' : false))
      return null;
    return this.ba((!(key == null) ? typeof key === 'string' : false) ? key : THROW_CCE());
  };
  protoOf(JsonObject).c1 = function () {
    return this.t4x_1.c1();
  };
  protoOf(JsonObject).equals = function (other) {
    return equals(this.t4x_1, other);
  };
  protoOf(JsonObject).hashCode = function () {
    return hashCode(this.t4x_1);
  };
  protoOf(JsonObject).toString = function () {
    var tmp = this.t4x_1.q2();
    return joinToString(tmp, ',', '{', '}', VOID, VOID, JsonObject$toString$lambda);
  };
  function get_jsonPrimitive(_this__u8e3s4) {
    _init_properties_JsonElement_kt__7cbdc2();
    var tmp0_elvis_lhs = _this__u8e3s4 instanceof JsonPrimitive ? _this__u8e3s4 : null;
    var tmp;
    if (tmp0_elvis_lhs == null) {
      error(_this__u8e3s4, 'JsonPrimitive');
    } else {
      tmp = tmp0_elvis_lhs;
    }
    return tmp;
  }
  function get_intOrNull(_this__u8e3s4) {
    _init_properties_JsonElement_kt__7cbdc2();
    // Inline function 'kotlinx.serialization.json.mapExceptionsToNull' call
    var tmp;
    try {
      // Inline function 'kotlinx.serialization.json.<get-intOrNull>.<anonymous>' call
      tmp = (new StringJsonLexer(_this__u8e3s4.x3e())).u4x();
    } catch ($p) {
      var tmp_0;
      if ($p instanceof JsonDecodingException) {
        var e = $p;
        tmp_0 = null;
      } else {
        throw $p;
      }
      tmp = tmp_0;
    }
    var tmp0_elvis_lhs = tmp;
    var tmp_1;
    if (tmp0_elvis_lhs == null) {
      return null;
    } else {
      tmp_1 = tmp0_elvis_lhs;
    }
    var result = tmp_1;
    // Inline function 'kotlin.ranges.contains' call
    var this_0 = numberRangeToNumber(IntCompanionObject_instance.MIN_VALUE, IntCompanionObject_instance.MAX_VALUE);
    if (!contains(isInterface(this_0, ClosedRange) ? this_0 : THROW_CCE(), result))
      return null;
    return result.mb();
  }
  function get_jsonObject(_this__u8e3s4) {
    _init_properties_JsonElement_kt__7cbdc2();
    var tmp0_elvis_lhs = _this__u8e3s4 instanceof JsonObject ? _this__u8e3s4 : null;
    var tmp;
    if (tmp0_elvis_lhs == null) {
      error(_this__u8e3s4, 'JsonObject');
    } else {
      tmp = tmp0_elvis_lhs;
    }
    return tmp;
  }
  function _get_$cachedSerializer__te6jhj($this) {
    return $this.w4x_1.t2();
  }
  function JsonNull$_anonymous__enib48() {
    return JsonNullSerializer_getInstance();
  }
  function JsonNull() {
    JsonNull_instance = this;
    JsonPrimitive.call(this);
    this.v4x_1 = 'null';
    var tmp = this;
    var tmp_0 = LazyThreadSafetyMode_PUBLICATION_getInstance();
    tmp.w4x_1 = lazy(tmp_0, JsonNull$_anonymous__enib48);
  }
  protoOf(JsonNull).x3e = function () {
    return this.v4x_1;
  };
  protoOf(JsonNull).s4x = function () {
    return _get_$cachedSerializer__te6jhj(this);
  };
  protoOf(JsonNull).a4n = function (typeParamsSerializers) {
    return this.s4x();
  };
  var JsonNull_instance;
  function JsonNull_getInstance() {
    if (JsonNull_instance == null)
      new JsonNull();
    return JsonNull_instance;
  }
  function JsonPrimitive_0(value) {
    _init_properties_JsonElement_kt__7cbdc2();
    if (value == null)
      return JsonNull_getInstance();
    return new JsonLiteral(value, false);
  }
  function Companion_2() {
  }
  var Companion_instance_3;
  function Companion_getInstance_7() {
    return Companion_instance_3;
  }
  function JsonArray(content) {
    JsonElement.call(this);
    this.x4x_1 = content;
  }
  protoOf(JsonArray).u = function () {
    return this.x4x_1.u();
  };
  protoOf(JsonArray).y4x = function (element) {
    return this.x4x_1.a1(element);
  };
  protoOf(JsonArray).a1 = function (element) {
    if (!(element instanceof JsonElement))
      return false;
    return this.y4x(element instanceof JsonElement ? element : THROW_CCE());
  };
  protoOf(JsonArray).z4x = function (elements) {
    return this.x4x_1.b1(elements);
  };
  protoOf(JsonArray).b1 = function (elements) {
    return this.z4x(elements);
  };
  protoOf(JsonArray).v = function (index) {
    return this.x4x_1.v(index);
  };
  protoOf(JsonArray).a4y = function (element) {
    return this.x4x_1.x(element);
  };
  protoOf(JsonArray).x = function (element) {
    if (!(element instanceof JsonElement))
      return -1;
    return this.a4y(element instanceof JsonElement ? element : THROW_CCE());
  };
  protoOf(JsonArray).c1 = function () {
    return this.x4x_1.c1();
  };
  protoOf(JsonArray).w = function () {
    return this.x4x_1.w();
  };
  protoOf(JsonArray).y = function () {
    return this.x4x_1.y();
  };
  protoOf(JsonArray).z = function (fromIndex, toIndex) {
    return this.x4x_1.z(fromIndex, toIndex);
  };
  protoOf(JsonArray).equals = function (other) {
    return equals(this.x4x_1, other);
  };
  protoOf(JsonArray).hashCode = function () {
    return hashCode(this.x4x_1);
  };
  protoOf(JsonArray).toString = function () {
    return joinToString(this.x4x_1, ',', '[', ']');
  };
  function error(_this__u8e3s4, element) {
    _init_properties_JsonElement_kt__7cbdc2();
    throw IllegalArgumentException_init_$Create$('Element ' + getKClassFromExpression(_this__u8e3s4) + ' is not a ' + element);
  }
  function JsonLiteral(body, isString, coerceToInlineType) {
    coerceToInlineType = coerceToInlineType === VOID ? null : coerceToInlineType;
    JsonPrimitive.call(this);
    this.b4y_1 = isString;
    this.c4y_1 = coerceToInlineType;
    this.d4y_1 = toString(body);
    if (!(this.c4y_1 == null)) {
      // Inline function 'kotlin.require' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'kotlin.require' call
      // Inline function 'kotlin.contracts.contract' call
      if (!this.c4y_1.m4c()) {
        // Inline function 'kotlin.require.<anonymous>' call
        var message = 'Failed requirement.';
        throw IllegalArgumentException_init_$Create$(toString(message));
      }
    }
  }
  protoOf(JsonLiteral).x3e = function () {
    return this.d4y_1;
  };
  protoOf(JsonLiteral).toString = function () {
    var tmp;
    if (this.b4y_1) {
      // Inline function 'kotlin.text.buildString' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'kotlin.apply' call
      var this_0 = StringBuilder_init_$Create$();
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'kotlinx.serialization.json.JsonLiteral.toString.<anonymous>' call
      printQuoted(this_0, this.d4y_1);
      tmp = this_0.toString();
    } else {
      tmp = this.d4y_1;
    }
    return tmp;
  };
  protoOf(JsonLiteral).equals = function (other) {
    if (this === other)
      return true;
    if (other == null ? true : !getKClassFromExpression(this).equals(getKClassFromExpression(other)))
      return false;
    if (!(other instanceof JsonLiteral))
      THROW_CCE();
    if (!(this.b4y_1 === other.b4y_1))
      return false;
    if (!(this.d4y_1 === other.d4y_1))
      return false;
    return true;
  };
  protoOf(JsonLiteral).hashCode = function () {
    var result = getBooleanHashCode(this.b4y_1);
    result = imul(31, result) + getStringHashCode(this.d4y_1) | 0;
    return result;
  };
  function JsonPrimitive_1(value) {
    _init_properties_JsonElement_kt__7cbdc2();
    if (value == null)
      return JsonNull_getInstance();
    return new JsonLiteral(value, false);
  }
  function JsonPrimitive_2(value) {
    _init_properties_JsonElement_kt__7cbdc2();
    if (value == null)
      return JsonNull_getInstance();
    return new JsonLiteral(value, true);
  }
  function get_booleanOrNull(_this__u8e3s4) {
    _init_properties_JsonElement_kt__7cbdc2();
    return toBooleanStrictOrNull_0(_this__u8e3s4.x3e());
  }
  function get_int(_this__u8e3s4) {
    _init_properties_JsonElement_kt__7cbdc2();
    // Inline function 'kotlinx.serialization.json.mapExceptions' call
    var tmp;
    try {
      // Inline function 'kotlinx.serialization.json.<get-int>.<anonymous>' call
      tmp = (new StringJsonLexer(_this__u8e3s4.x3e())).u4x();
    } catch ($p) {
      var tmp_0;
      if ($p instanceof JsonDecodingException) {
        var e = $p;
        throw NumberFormatException_init_$Create$(e.message);
      } else {
        throw $p;
      }
    }
    var result = tmp;
    // Inline function 'kotlin.ranges.contains' call
    var this_0 = numberRangeToNumber(IntCompanionObject_instance.MIN_VALUE, IntCompanionObject_instance.MAX_VALUE);
    if (!contains(isInterface(this_0, ClosedRange) ? this_0 : THROW_CCE(), result))
      throw NumberFormatException_init_$Create$(_this__u8e3s4.x3e() + ' is not an Int');
    return result.mb();
  }
  function get_long(_this__u8e3s4) {
    _init_properties_JsonElement_kt__7cbdc2();
    // Inline function 'kotlinx.serialization.json.mapExceptions' call
    var tmp;
    try {
      // Inline function 'kotlinx.serialization.json.<get-long>.<anonymous>' call
      tmp = (new StringJsonLexer(_this__u8e3s4.x3e())).u4x();
    } catch ($p) {
      var tmp_0;
      if ($p instanceof JsonDecodingException) {
        var e = $p;
        throw NumberFormatException_init_$Create$(e.message);
      } else {
        throw $p;
      }
    }
    return tmp;
  }
  function get_float(_this__u8e3s4) {
    _init_properties_JsonElement_kt__7cbdc2();
    // Inline function 'kotlin.text.toFloat' call
    var this_0 = _this__u8e3s4.x3e();
    // Inline function 'kotlin.js.unsafeCast' call
    // Inline function 'kotlin.js.asDynamic' call
    return toDouble(this_0);
  }
  function get_double(_this__u8e3s4) {
    _init_properties_JsonElement_kt__7cbdc2();
    return toDouble(_this__u8e3s4.x3e());
  }
  function get_contentOrNull(_this__u8e3s4) {
    _init_properties_JsonElement_kt__7cbdc2();
    var tmp;
    if (_this__u8e3s4 instanceof JsonNull) {
      tmp = null;
    } else {
      tmp = _this__u8e3s4.x3e();
    }
    return tmp;
  }
  function get_boolean(_this__u8e3s4) {
    _init_properties_JsonElement_kt__7cbdc2();
    var tmp0_elvis_lhs = toBooleanStrictOrNull_0(_this__u8e3s4.x3e());
    var tmp;
    if (tmp0_elvis_lhs == null) {
      throw IllegalStateException_init_$Create$('' + _this__u8e3s4 + ' does not represent a Boolean');
    } else {
      tmp = tmp0_elvis_lhs;
    }
    return tmp;
  }
  var properties_initialized_JsonElement_kt_abxy8s;
  function _init_properties_JsonElement_kt__7cbdc2() {
    if (!properties_initialized_JsonElement_kt_abxy8s) {
      properties_initialized_JsonElement_kt_abxy8s = true;
      jsonUnquotedLiteralDescriptor = InlinePrimitiveDescriptor('kotlinx.serialization.json.JsonUnquotedLiteral', serializer(StringCompanionObject_instance));
    }
  }
  function JsonElementSerializer$descriptor$lambda($this$buildSerialDescriptor) {
    $this$buildSerialDescriptor.g4b('JsonPrimitive', defer(JsonElementSerializer$descriptor$lambda$lambda));
    $this$buildSerialDescriptor.g4b('JsonNull', defer(JsonElementSerializer$descriptor$lambda$lambda_0));
    $this$buildSerialDescriptor.g4b('JsonLiteral', defer(JsonElementSerializer$descriptor$lambda$lambda_1));
    $this$buildSerialDescriptor.g4b('JsonObject', defer(JsonElementSerializer$descriptor$lambda$lambda_2));
    $this$buildSerialDescriptor.g4b('JsonArray', defer(JsonElementSerializer$descriptor$lambda$lambda_3));
    return Unit_instance;
  }
  function JsonElementSerializer$descriptor$lambda$lambda() {
    return JsonPrimitiveSerializer_getInstance().e4y_1;
  }
  function JsonElementSerializer$descriptor$lambda$lambda_0() {
    return JsonNullSerializer_getInstance().f4y_1;
  }
  function JsonElementSerializer$descriptor$lambda$lambda_1() {
    return JsonLiteralSerializer_getInstance().g4y_1;
  }
  function JsonElementSerializer$descriptor$lambda$lambda_2() {
    return JsonObjectSerializer_getInstance().h4y_1;
  }
  function JsonElementSerializer$descriptor$lambda$lambda_3() {
    return JsonArraySerializer_getInstance().i4y_1;
  }
  function JsonElementSerializer() {
    JsonElementSerializer_instance = this;
    var tmp = this;
    var tmp_0 = SEALED_getInstance();
    tmp.j4y_1 = buildSerialDescriptor('kotlinx.serialization.json.JsonElement', tmp_0, [], JsonElementSerializer$descriptor$lambda);
  }
  protoOf(JsonElementSerializer).v4a = function () {
    return this.j4y_1;
  };
  protoOf(JsonElementSerializer).k4y = function (encoder, value) {
    verify(encoder);
    if (value instanceof JsonPrimitive) {
      encoder.e4g(JsonPrimitiveSerializer_getInstance(), value);
    } else {
      if (value instanceof JsonObject) {
        encoder.e4g(JsonObjectSerializer_getInstance(), value);
      } else {
        if (value instanceof JsonArray) {
          encoder.e4g(JsonArraySerializer_getInstance(), value);
        }
      }
    }
  };
  protoOf(JsonElementSerializer).w4a = function (encoder, value) {
    return this.k4y(encoder, value instanceof JsonElement ? value : THROW_CCE());
  };
  protoOf(JsonElementSerializer).x4a = function (decoder) {
    var input = asJsonDecoder(decoder);
    return input.p4x();
  };
  var JsonElementSerializer_instance;
  function JsonElementSerializer_getInstance() {
    if (JsonElementSerializer_instance == null)
      new JsonElementSerializer();
    return JsonElementSerializer_instance;
  }
  function JsonPrimitiveSerializer() {
    JsonPrimitiveSerializer_instance = this;
    this.e4y_1 = buildSerialDescriptor('kotlinx.serialization.json.JsonPrimitive', STRING_getInstance(), []);
  }
  protoOf(JsonPrimitiveSerializer).v4a = function () {
    return this.e4y_1;
  };
  protoOf(JsonPrimitiveSerializer).l4y = function (encoder, value) {
    verify(encoder);
    var tmp;
    if (value instanceof JsonNull) {
      encoder.e4g(JsonNullSerializer_getInstance(), JsonNull_getInstance());
      tmp = Unit_instance;
    } else {
      var tmp_0 = JsonLiteralSerializer_getInstance();
      encoder.e4g(tmp_0, value instanceof JsonLiteral ? value : THROW_CCE());
      tmp = Unit_instance;
    }
    return tmp;
  };
  protoOf(JsonPrimitiveSerializer).w4a = function (encoder, value) {
    return this.l4y(encoder, value instanceof JsonPrimitive ? value : THROW_CCE());
  };
  protoOf(JsonPrimitiveSerializer).x4a = function (decoder) {
    var result = asJsonDecoder(decoder).p4x();
    if (!(result instanceof JsonPrimitive))
      throw JsonDecodingException_0(-1, 'Unexpected JSON element, expected JsonPrimitive, had ' + getKClassFromExpression(result), toString(result));
    return result;
  };
  var JsonPrimitiveSerializer_instance;
  function JsonPrimitiveSerializer_getInstance() {
    if (JsonPrimitiveSerializer_instance == null)
      new JsonPrimitiveSerializer();
    return JsonPrimitiveSerializer_instance;
  }
  function JsonObjectDescriptor() {
    JsonObjectDescriptor_instance = this;
    this.m4y_1 = MapSerializer(serializer(StringCompanionObject_instance), JsonElementSerializer_getInstance()).v4a();
    this.n4y_1 = 'kotlinx.serialization.json.JsonObject';
  }
  protoOf(JsonObjectDescriptor).k4c = function () {
    return this.m4y_1.k4c();
  };
  protoOf(JsonObjectDescriptor).l4c = function () {
    return this.m4y_1.l4c();
  };
  protoOf(JsonObjectDescriptor).m4c = function () {
    return this.m4y_1.m4c();
  };
  protoOf(JsonObjectDescriptor).g4c = function () {
    return this.m4y_1.g4c();
  };
  protoOf(JsonObjectDescriptor).n4c = function () {
    return this.m4y_1.n4c();
  };
  protoOf(JsonObjectDescriptor).o4c = function (index) {
    return this.m4y_1.o4c(index);
  };
  protoOf(JsonObjectDescriptor).p4c = function (index) {
    return this.m4y_1.p4c(index);
  };
  protoOf(JsonObjectDescriptor).q4c = function (name) {
    return this.m4y_1.q4c(name);
  };
  protoOf(JsonObjectDescriptor).r4c = function (index) {
    return this.m4y_1.r4c(index);
  };
  protoOf(JsonObjectDescriptor).s4c = function (index) {
    return this.m4y_1.s4c(index);
  };
  protoOf(JsonObjectDescriptor).v4b = function () {
    return this.n4y_1;
  };
  var JsonObjectDescriptor_instance;
  function JsonObjectDescriptor_getInstance() {
    if (JsonObjectDescriptor_instance == null)
      new JsonObjectDescriptor();
    return JsonObjectDescriptor_instance;
  }
  function JsonObjectSerializer() {
    JsonObjectSerializer_instance = this;
    this.h4y_1 = JsonObjectDescriptor_getInstance();
  }
  protoOf(JsonObjectSerializer).v4a = function () {
    return this.h4y_1;
  };
  protoOf(JsonObjectSerializer).o4y = function (encoder, value) {
    verify(encoder);
    MapSerializer(serializer(StringCompanionObject_instance), JsonElementSerializer_getInstance()).w4a(encoder, value);
  };
  protoOf(JsonObjectSerializer).w4a = function (encoder, value) {
    return this.o4y(encoder, value instanceof JsonObject ? value : THROW_CCE());
  };
  protoOf(JsonObjectSerializer).x4a = function (decoder) {
    verify_0(decoder);
    return new JsonObject(MapSerializer(serializer(StringCompanionObject_instance), JsonElementSerializer_getInstance()).x4a(decoder));
  };
  var JsonObjectSerializer_instance;
  function JsonObjectSerializer_getInstance() {
    if (JsonObjectSerializer_instance == null)
      new JsonObjectSerializer();
    return JsonObjectSerializer_instance;
  }
  function JsonNullSerializer() {
    JsonNullSerializer_instance = this;
    this.f4y_1 = buildSerialDescriptor('kotlinx.serialization.json.JsonNull', ENUM_getInstance(), []);
  }
  protoOf(JsonNullSerializer).v4a = function () {
    return this.f4y_1;
  };
  protoOf(JsonNullSerializer).p4y = function (encoder, value) {
    verify(encoder);
    encoder.h4f();
  };
  protoOf(JsonNullSerializer).w4a = function (encoder, value) {
    return this.p4y(encoder, value instanceof JsonNull ? value : THROW_CCE());
  };
  protoOf(JsonNullSerializer).x4a = function (decoder) {
    verify_0(decoder);
    if (decoder.y4d()) {
      throw new JsonDecodingException("Expected 'null' literal");
    }
    decoder.z4d();
    return JsonNull_getInstance();
  };
  var JsonNullSerializer_instance;
  function JsonNullSerializer_getInstance() {
    if (JsonNullSerializer_instance == null)
      new JsonNullSerializer();
    return JsonNullSerializer_instance;
  }
  function JsonArrayDescriptor() {
    JsonArrayDescriptor_instance = this;
    this.q4y_1 = ListSerializer(JsonElementSerializer_getInstance()).v4a();
    this.r4y_1 = 'kotlinx.serialization.json.JsonArray';
  }
  protoOf(JsonArrayDescriptor).k4c = function () {
    return this.q4y_1.k4c();
  };
  protoOf(JsonArrayDescriptor).l4c = function () {
    return this.q4y_1.l4c();
  };
  protoOf(JsonArrayDescriptor).m4c = function () {
    return this.q4y_1.m4c();
  };
  protoOf(JsonArrayDescriptor).g4c = function () {
    return this.q4y_1.g4c();
  };
  protoOf(JsonArrayDescriptor).n4c = function () {
    return this.q4y_1.n4c();
  };
  protoOf(JsonArrayDescriptor).o4c = function (index) {
    return this.q4y_1.o4c(index);
  };
  protoOf(JsonArrayDescriptor).p4c = function (index) {
    return this.q4y_1.p4c(index);
  };
  protoOf(JsonArrayDescriptor).q4c = function (name) {
    return this.q4y_1.q4c(name);
  };
  protoOf(JsonArrayDescriptor).r4c = function (index) {
    return this.q4y_1.r4c(index);
  };
  protoOf(JsonArrayDescriptor).s4c = function (index) {
    return this.q4y_1.s4c(index);
  };
  protoOf(JsonArrayDescriptor).v4b = function () {
    return this.r4y_1;
  };
  var JsonArrayDescriptor_instance;
  function JsonArrayDescriptor_getInstance() {
    if (JsonArrayDescriptor_instance == null)
      new JsonArrayDescriptor();
    return JsonArrayDescriptor_instance;
  }
  function JsonArraySerializer() {
    JsonArraySerializer_instance = this;
    this.i4y_1 = JsonArrayDescriptor_getInstance();
  }
  protoOf(JsonArraySerializer).v4a = function () {
    return this.i4y_1;
  };
  protoOf(JsonArraySerializer).s4y = function (encoder, value) {
    verify(encoder);
    ListSerializer(JsonElementSerializer_getInstance()).w4a(encoder, value);
  };
  protoOf(JsonArraySerializer).w4a = function (encoder, value) {
    return this.s4y(encoder, value instanceof JsonArray ? value : THROW_CCE());
  };
  protoOf(JsonArraySerializer).x4a = function (decoder) {
    verify_0(decoder);
    return new JsonArray(ListSerializer(JsonElementSerializer_getInstance()).x4a(decoder));
  };
  var JsonArraySerializer_instance;
  function JsonArraySerializer_getInstance() {
    if (JsonArraySerializer_instance == null)
      new JsonArraySerializer();
    return JsonArraySerializer_instance;
  }
  function asJsonDecoder(_this__u8e3s4) {
    var tmp0_elvis_lhs = isInterface(_this__u8e3s4, JsonDecoder) ? _this__u8e3s4 : null;
    var tmp;
    if (tmp0_elvis_lhs == null) {
      throw IllegalStateException_init_$Create$('This serializer can be used only with Json format.' + ('Expected Decoder to be JsonDecoder, got ' + getKClassFromExpression(_this__u8e3s4)));
    } else {
      tmp = tmp0_elvis_lhs;
    }
    return tmp;
  }
  function defer(deferred) {
    return new defer$1(deferred);
  }
  function JsonLiteralSerializer() {
    JsonLiteralSerializer_instance = this;
    this.g4y_1 = PrimitiveSerialDescriptor('kotlinx.serialization.json.JsonLiteral', STRING_getInstance());
  }
  protoOf(JsonLiteralSerializer).v4a = function () {
    return this.g4y_1;
  };
  protoOf(JsonLiteralSerializer).t4y = function (encoder, value) {
    verify(encoder);
    if (value.b4y_1) {
      return encoder.q4f(value.d4y_1);
    }
    if (!(value.c4y_1 == null)) {
      return encoder.s4f(value.c4y_1).q4f(value.d4y_1);
    }
    var tmp0_safe_receiver = toLongOrNull(value.d4y_1);
    if (tmp0_safe_receiver == null)
      null;
    else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      return encoder.m4f(tmp0_safe_receiver);
    }
    var tmp1_safe_receiver = toULongOrNull(value.d4y_1);
    var tmp = tmp1_safe_receiver;
    if ((tmp == null ? null : new ULong(tmp)) == null)
      null;
    else {
      // Inline function 'kotlin.let' call
      var tmp_0 = tmp1_safe_receiver;
      // Inline function 'kotlin.contracts.contract' call
      var it = (tmp_0 == null ? null : new ULong(tmp_0)).vo_1;
      var tmp_1 = encoder.s4f(serializer_0(Companion_getInstance()).v4a());
      // Inline function 'kotlin.ULong.toLong' call
      var tmp$ret$1 = _ULong___get_data__impl__fggpzb(it);
      tmp_1.m4f(tmp$ret$1);
      return Unit_instance;
    }
    var tmp2_safe_receiver = toDoubleOrNull(value.d4y_1);
    if (tmp2_safe_receiver == null)
      null;
    else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      return encoder.o4f(tmp2_safe_receiver);
    }
    var tmp3_safe_receiver = toBooleanStrictOrNull(value.d4y_1);
    if (tmp3_safe_receiver == null)
      null;
    else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      return encoder.i4f(tmp3_safe_receiver);
    }
    encoder.q4f(value.d4y_1);
  };
  protoOf(JsonLiteralSerializer).w4a = function (encoder, value) {
    return this.t4y(encoder, value instanceof JsonLiteral ? value : THROW_CCE());
  };
  protoOf(JsonLiteralSerializer).x4a = function (decoder) {
    var result = asJsonDecoder(decoder).p4x();
    if (!(result instanceof JsonLiteral))
      throw JsonDecodingException_0(-1, 'Unexpected JSON element, expected JsonLiteral, had ' + getKClassFromExpression(result), toString(result));
    return result;
  };
  var JsonLiteralSerializer_instance;
  function JsonLiteralSerializer_getInstance() {
    if (JsonLiteralSerializer_instance == null)
      new JsonLiteralSerializer();
    return JsonLiteralSerializer_instance;
  }
  function verify(encoder) {
    asJsonEncoder(encoder);
  }
  function verify_0(decoder) {
    asJsonDecoder(decoder);
  }
  function asJsonEncoder(_this__u8e3s4) {
    var tmp0_elvis_lhs = isInterface(_this__u8e3s4, JsonEncoder) ? _this__u8e3s4 : null;
    var tmp;
    if (tmp0_elvis_lhs == null) {
      throw IllegalStateException_init_$Create$('This serializer can be used only with Json format.' + ('Expected Encoder to be JsonEncoder, got ' + getKClassFromExpression(_this__u8e3s4)));
    } else {
      tmp = tmp0_elvis_lhs;
    }
    return tmp;
  }
  function _get_original__l7ku1m($this) {
    // Inline function 'kotlin.getValue' call
    var this_0 = $this.u4y_1;
    original$factory();
    return this_0.t2();
  }
  function defer$1($deferred) {
    this.u4y_1 = lazy_0($deferred);
  }
  protoOf(defer$1).v4b = function () {
    return _get_original__l7ku1m(this).v4b();
  };
  protoOf(defer$1).n4c = function () {
    return _get_original__l7ku1m(this).n4c();
  };
  protoOf(defer$1).l4c = function () {
    return _get_original__l7ku1m(this).l4c();
  };
  protoOf(defer$1).r4c = function (index) {
    return _get_original__l7ku1m(this).r4c(index);
  };
  protoOf(defer$1).q4c = function (name) {
    return _get_original__l7ku1m(this).q4c(name);
  };
  protoOf(defer$1).o4c = function (index) {
    return _get_original__l7ku1m(this).o4c(index);
  };
  protoOf(defer$1).p4c = function (index) {
    return _get_original__l7ku1m(this).p4c(index);
  };
  protoOf(defer$1).s4c = function (index) {
    return _get_original__l7ku1m(this).s4c(index);
  };
  function original$factory() {
    return getPropertyCallableRef('original', 1, KProperty1, function (receiver) {
      return _get_original__l7ku1m(receiver);
    }, null);
  }
  function JsonEncoder() {
  }
  function Composer(writer) {
    this.v4y_1 = writer;
    this.w4y_1 = true;
  }
  protoOf(Composer).x4y = function () {
    this.w4y_1 = true;
  };
  protoOf(Composer).y4y = function () {
    return Unit_instance;
  };
  protoOf(Composer).z4y = function () {
    this.w4y_1 = false;
  };
  protoOf(Composer).a4z = function () {
    return Unit_instance;
  };
  protoOf(Composer).b4z = function (v) {
    return this.v4y_1.c4z(v);
  };
  protoOf(Composer).d4z = function (v) {
    return this.v4y_1.e4z(v);
  };
  protoOf(Composer).f4z = function (v) {
    return this.v4y_1.e4z(v.toString());
  };
  protoOf(Composer).g4z = function (v) {
    return this.v4y_1.e4z(v.toString());
  };
  protoOf(Composer).h4z = function (v) {
    return this.v4y_1.i4z(toLong(v));
  };
  protoOf(Composer).j4z = function (v) {
    return this.v4y_1.i4z(toLong(v));
  };
  protoOf(Composer).k4z = function (v) {
    return this.v4y_1.i4z(toLong(v));
  };
  protoOf(Composer).l4z = function (v) {
    return this.v4y_1.i4z(v);
  };
  protoOf(Composer).m4z = function (v) {
    return this.v4y_1.e4z(v.toString());
  };
  protoOf(Composer).n4z = function (value) {
    return this.v4y_1.o4z(value);
  };
  function Composer_0(sb, json) {
    return json.q4v_1.c4x_1 ? new ComposerWithPrettyPrint(sb, json) : new Composer(sb);
  }
  function ComposerForUnsignedNumbers(writer, forceQuoting) {
    Composer.call(this, writer);
    this.r4z_1 = forceQuoting;
  }
  protoOf(ComposerForUnsignedNumbers).k4z = function (v) {
    if (this.r4z_1) {
      // Inline function 'kotlin.toUInt' call
      var tmp$ret$0 = _UInt___init__impl__l7qpdl(v);
      this.n4z(UInt__toString_impl_dbgl21(tmp$ret$0));
    } else {
      // Inline function 'kotlin.toUInt' call
      var tmp$ret$1 = _UInt___init__impl__l7qpdl(v);
      this.d4z(UInt__toString_impl_dbgl21(tmp$ret$1));
    }
  };
  protoOf(ComposerForUnsignedNumbers).l4z = function (v) {
    if (this.r4z_1) {
      // Inline function 'kotlin.toULong' call
      var tmp$ret$0 = _ULong___init__impl__c78o9k(v);
      this.n4z(ULong__toString_impl_f9au7k(tmp$ret$0));
    } else {
      // Inline function 'kotlin.toULong' call
      var tmp$ret$1 = _ULong___init__impl__c78o9k(v);
      this.d4z(ULong__toString_impl_f9au7k(tmp$ret$1));
    }
  };
  protoOf(ComposerForUnsignedNumbers).h4z = function (v) {
    if (this.r4z_1) {
      // Inline function 'kotlin.toUByte' call
      var tmp$ret$0 = _UByte___init__impl__g9hnc4(v);
      this.n4z(UByte__toString_impl_v72jg(tmp$ret$0));
    } else {
      // Inline function 'kotlin.toUByte' call
      var tmp$ret$1 = _UByte___init__impl__g9hnc4(v);
      this.d4z(UByte__toString_impl_v72jg(tmp$ret$1));
    }
  };
  protoOf(ComposerForUnsignedNumbers).j4z = function (v) {
    if (this.r4z_1) {
      // Inline function 'kotlin.toUShort' call
      var tmp$ret$0 = _UShort___init__impl__jigrne(v);
      this.n4z(UShort__toString_impl_edaoee(tmp$ret$0));
    } else {
      // Inline function 'kotlin.toUShort' call
      var tmp$ret$1 = _UShort___init__impl__jigrne(v);
      this.d4z(UShort__toString_impl_edaoee(tmp$ret$1));
    }
  };
  function ComposerForUnquotedLiterals(writer, forceQuoting) {
    Composer.call(this, writer);
    this.u4z_1 = forceQuoting;
  }
  protoOf(ComposerForUnquotedLiterals).n4z = function (value) {
    if (this.u4z_1) {
      protoOf(Composer).n4z.call(this, value);
    } else {
      protoOf(Composer).d4z.call(this, value);
    }
  };
  function ComposerWithPrettyPrint(writer, json) {
    Composer.call(this, writer);
    this.x4z_1 = json;
    this.y4z_1 = 0;
  }
  protoOf(ComposerWithPrettyPrint).x4y = function () {
    this.w4y_1 = true;
    this.y4z_1 = this.y4z_1 + 1 | 0;
  };
  protoOf(ComposerWithPrettyPrint).y4y = function () {
    this.y4z_1 = this.y4z_1 - 1 | 0;
  };
  protoOf(ComposerWithPrettyPrint).z4y = function () {
    this.w4y_1 = false;
    this.d4z('\n');
    // Inline function 'kotlin.repeat' call
    var times = this.y4z_1;
    // Inline function 'kotlin.contracts.contract' call
    var inductionVariable = 0;
    if (inductionVariable < times)
      do {
        var index = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        // Inline function 'kotlinx.serialization.json.internal.ComposerWithPrettyPrint.nextItem.<anonymous>' call
        this.d4z(this.x4z_1.q4v_1.e4x_1);
      }
       while (inductionVariable < times);
  };
  protoOf(ComposerWithPrettyPrint).a4z = function () {
    this.b4z(_Char___init__impl__6a9atx(32));
  };
  function readIfAbsent($this, descriptor, index) {
    $this.a50_1 = !descriptor.s4c(index) ? descriptor.p4c(index).g4c() : false;
    return $this.a50_1;
  }
  function JsonElementMarker$readIfAbsent$ref($boundThis) {
    var l = function (p0, p1) {
      return readIfAbsent($boundThis, p0, p1);
    };
    l.callableName = 'readIfAbsent';
    return l;
  }
  function JsonElementMarker(descriptor) {
    var tmp = this;
    tmp.z4z_1 = new ElementMarker(descriptor, JsonElementMarker$readIfAbsent$ref(this));
    this.a50_1 = false;
  }
  protoOf(JsonElementMarker).q4k = function (index) {
    this.z4z_1.q4k(index);
  };
  protoOf(JsonElementMarker).r4k = function () {
    return this.z4z_1.r4k();
  };
  function JsonDecodingException(message) {
    JsonException.call(this, message);
    captureStack(this, JsonDecodingException);
  }
  function JsonDecodingException_0(offset, message, input) {
    return JsonDecodingException_1(offset, message + '\nJSON input: ' + minify(input, offset));
  }
  function invalidTrailingComma(_this__u8e3s4, entity) {
    entity = entity === VOID ? 'object' : entity;
    _this__u8e3s4.b50('Trailing comma before the end of JSON ' + entity, _this__u8e3s4.d4w_1 - 1 | 0, "Trailing commas are non-complaint JSON and not allowed by default. Use 'allowTrailingCommas = true' in 'Json {}' builder to support them.");
  }
  function throwInvalidFloatingPointDecoded(_this__u8e3s4, result) {
    _this__u8e3s4.c50('Unexpected special floating-point value ' + toString(result) + '. By default, ' + 'non-finite floating point values are prohibited because they do not conform JSON specification', VOID, get_specialFlowingValuesHint());
  }
  function JsonEncodingException(message) {
    JsonException.call(this, message);
    captureStack(this, JsonEncodingException);
  }
  function InvalidKeyKindException(keyDescriptor) {
    return new JsonEncodingException("Value of type '" + keyDescriptor.v4b() + "' can't be used in JSON as a key in the map. " + ("It should have either primitive or enum kind, but its kind is '" + keyDescriptor.n4c() + "'.\n") + get_allowStructuredMapKeysHint());
  }
  function InvalidFloatingPointDecoded(value, key, output) {
    return JsonDecodingException_1(-1, unexpectedFpErrorMessage(value, key, output));
  }
  function JsonDecodingException_1(offset, message) {
    return new JsonDecodingException(offset >= 0 ? 'Unexpected JSON token at offset ' + offset + ': ' + message : message);
  }
  function UnknownKeyException(key, input) {
    return JsonDecodingException_1(-1, "Encountered an unknown key '" + key + "'.\n" + (get_ignoreUnknownKeysHint() + '\n') + ('Current input: ' + minify(input)));
  }
  function JsonException(message) {
    SerializationException_init_$Init$(message, this);
    captureStack(this, JsonException);
  }
  function minify(_this__u8e3s4, offset) {
    offset = offset === VOID ? -1 : offset;
    if (charSequenceLength(_this__u8e3s4) < 200)
      return _this__u8e3s4;
    if (offset === -1) {
      var start = charSequenceLength(_this__u8e3s4) - 60 | 0;
      if (start <= 0)
        return _this__u8e3s4;
      // Inline function 'kotlin.text.substring' call
      var endIndex = charSequenceLength(_this__u8e3s4);
      return '.....' + toString(charSequenceSubSequence(_this__u8e3s4, start, endIndex));
    }
    var start_0 = offset - 30 | 0;
    var end = offset + 30 | 0;
    var prefix = start_0 <= 0 ? '' : '.....';
    var suffix = end >= charSequenceLength(_this__u8e3s4) ? '' : '.....';
    // Inline function 'kotlin.text.substring' call
    var startIndex = coerceAtLeast(start_0, 0);
    var endIndex_0 = coerceAtMost(end, charSequenceLength(_this__u8e3s4));
    return prefix + toString(charSequenceSubSequence(_this__u8e3s4, startIndex, endIndex_0)) + suffix;
  }
  function unexpectedFpErrorMessage(value, key, output) {
    return 'Unexpected special floating-point value ' + toString(value) + ' with key ' + key + '. By default, ' + 'non-finite floating point values are prohibited because they do not conform JSON specification. ' + (get_specialFlowingValuesHint() + '\n') + ('Current output: ' + minify(output));
  }
  function InvalidFloatingPointEncoded(value, output) {
    return new JsonEncodingException('Unexpected special floating-point value ' + toString(value) + '. By default, ' + 'non-finite floating point values are prohibited because they do not conform JSON specification. ' + (get_specialFlowingValuesHint() + '\n') + ('Current output: ' + minify(output)));
  }
  function get_JsonDeserializationNamesKey() {
    _init_properties_JsonNamesMap_kt__cbbp0k();
    return JsonDeserializationNamesKey;
  }
  var JsonDeserializationNamesKey;
  function get_JsonSerializationNamesKey() {
    _init_properties_JsonNamesMap_kt__cbbp0k();
    return JsonSerializationNamesKey;
  }
  var JsonSerializationNamesKey;
  function getJsonNameIndex(_this__u8e3s4, json, name) {
    _init_properties_JsonNamesMap_kt__cbbp0k();
    if (decodeCaseInsensitive(json, _this__u8e3s4)) {
      // Inline function 'kotlin.text.lowercase' call
      // Inline function 'kotlin.js.asDynamic' call
      var tmp$ret$1 = name.toLowerCase();
      return getJsonNameIndexSlowPath(_this__u8e3s4, json, tmp$ret$1);
    }
    var strategy = namingStrategy(_this__u8e3s4, json);
    if (!(strategy == null))
      return getJsonNameIndexSlowPath(_this__u8e3s4, json, name);
    var index = _this__u8e3s4.q4c(name);
    if (!(index === -3))
      return index;
    if (!json.q4v_1.j4x_1)
      return index;
    return getJsonNameIndexSlowPath(_this__u8e3s4, json, name);
  }
  function getJsonNameIndexOrThrow(_this__u8e3s4, json, name, suffix) {
    suffix = suffix === VOID ? '' : suffix;
    _init_properties_JsonNamesMap_kt__cbbp0k();
    var index = getJsonNameIndex(_this__u8e3s4, json, name);
    if (index === -3)
      throw SerializationException_init_$Create$(_this__u8e3s4.v4b() + " does not contain element with name '" + name + "'" + suffix);
    return index;
  }
  function getJsonElementName(_this__u8e3s4, json, index) {
    _init_properties_JsonNamesMap_kt__cbbp0k();
    var strategy = namingStrategy(_this__u8e3s4, json);
    return strategy == null ? _this__u8e3s4.r4c(index) : serializationNamesIndices(_this__u8e3s4, json, strategy)[index];
  }
  function namingStrategy(_this__u8e3s4, json) {
    _init_properties_JsonNamesMap_kt__cbbp0k();
    return equals(_this__u8e3s4.n4c(), CLASS_getInstance()) ? json.q4v_1.k4x_1 : null;
  }
  function deserializationNamesMap(_this__u8e3s4, descriptor) {
    _init_properties_JsonNamesMap_kt__cbbp0k();
    var tmp = get_schemaCache(_this__u8e3s4);
    var tmp_0 = get_JsonDeserializationNamesKey();
    return tmp.e50(descriptor, tmp_0, deserializationNamesMap$lambda(descriptor, _this__u8e3s4));
  }
  function decodeCaseInsensitive(_this__u8e3s4, descriptor) {
    _init_properties_JsonNamesMap_kt__cbbp0k();
    return _this__u8e3s4.q4v_1.l4x_1 ? equals(descriptor.n4c(), ENUM_getInstance()) : false;
  }
  function getJsonNameIndexSlowPath(_this__u8e3s4, json, name) {
    _init_properties_JsonNamesMap_kt__cbbp0k();
    var tmp0_elvis_lhs = deserializationNamesMap(json, _this__u8e3s4).q(name);
    var tmp;
    if (tmp0_elvis_lhs == null) {
      tmp = -3;
    } else {
      tmp = tmp0_elvis_lhs;
    }
    return tmp;
  }
  function serializationNamesIndices(_this__u8e3s4, json, strategy) {
    _init_properties_JsonNamesMap_kt__cbbp0k();
    var tmp = get_schemaCache(json);
    var tmp_0 = get_JsonSerializationNamesKey();
    return tmp.e50(_this__u8e3s4, tmp_0, serializationNamesIndices$lambda(_this__u8e3s4, strategy));
  }
  function buildDeserializationNamesMap(_this__u8e3s4, json) {
    _init_properties_JsonNamesMap_kt__cbbp0k();
    // Inline function 'kotlin.collections.mutableMapOf' call
    var builder = LinkedHashMap_init_$Create$();
    var useLowercaseEnums = decodeCaseInsensitive(json, _this__u8e3s4);
    var strategyForClasses = namingStrategy(_this__u8e3s4, json);
    var inductionVariable = 0;
    var last = _this__u8e3s4.l4c();
    if (inductionVariable < last)
      do {
        var i = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        // Inline function 'kotlin.collections.filterIsInstance' call
        // Inline function 'kotlin.collections.filterIsInstanceTo' call
        var this_0 = _this__u8e3s4.o4c(i);
        var destination = ArrayList_init_$Create$();
        var tmp0_iterator = this_0.w();
        while (tmp0_iterator.f()) {
          var element = tmp0_iterator.e();
          if (element instanceof JsonNames) {
            destination.i1(element);
          }
        }
        var tmp1_safe_receiver = singleOrNull(destination);
        var tmp2_safe_receiver = tmp1_safe_receiver == null ? null : tmp1_safe_receiver.f50_1;
        if (tmp2_safe_receiver == null)
          null;
        else {
          // Inline function 'kotlin.collections.forEach' call
          var inductionVariable_0 = 0;
          var last_0 = tmp2_safe_receiver.length;
          while (inductionVariable_0 < last_0) {
            var element_0 = tmp2_safe_receiver[inductionVariable_0];
            inductionVariable_0 = inductionVariable_0 + 1 | 0;
            // Inline function 'kotlinx.serialization.json.internal.buildDeserializationNamesMap.<anonymous>' call
            var tmp;
            if (useLowercaseEnums) {
              // Inline function 'kotlin.text.lowercase' call
              // Inline function 'kotlin.js.asDynamic' call
              tmp = element_0.toLowerCase();
            } else {
              tmp = element_0;
            }
            buildDeserializationNamesMap$putOrThrow(builder, _this__u8e3s4, tmp, i);
          }
        }
        var tmp_0;
        if (useLowercaseEnums) {
          // Inline function 'kotlin.text.lowercase' call
          // Inline function 'kotlin.js.asDynamic' call
          tmp_0 = _this__u8e3s4.r4c(i).toLowerCase();
        } else if (!(strategyForClasses == null)) {
          tmp_0 = strategyForClasses.g50(_this__u8e3s4, i, _this__u8e3s4.r4c(i));
        } else {
          tmp_0 = null;
        }
        var nameToPut = tmp_0;
        if (nameToPut == null)
          null;
        else {
          // Inline function 'kotlin.let' call
          // Inline function 'kotlin.contracts.contract' call
          buildDeserializationNamesMap$putOrThrow(builder, _this__u8e3s4, nameToPut, i);
        }
      }
       while (inductionVariable < last);
    // Inline function 'kotlin.collections.ifEmpty' call
    var tmp_1;
    if (builder.c1()) {
      // Inline function 'kotlinx.serialization.json.internal.buildDeserializationNamesMap.<anonymous>' call
      tmp_1 = emptyMap();
    } else {
      tmp_1 = builder;
    }
    return tmp_1;
  }
  function buildDeserializationNamesMap$putOrThrow(_this__u8e3s4, $this_buildDeserializationNamesMap, name, index) {
    var entity = equals($this_buildDeserializationNamesMap.n4c(), ENUM_getInstance()) ? 'enum value' : 'property';
    // Inline function 'kotlin.collections.contains' call
    // Inline function 'kotlin.collections.containsKey' call
    if ((isInterface(_this__u8e3s4, Map) ? _this__u8e3s4 : THROW_CCE()).r(name)) {
      throw new JsonException("The suggested name '" + name + "' for " + entity + ' ' + $this_buildDeserializationNamesMap.r4c(index) + ' is already one of the names for ' + entity + ' ' + ($this_buildDeserializationNamesMap.r4c(getValue(_this__u8e3s4, name)) + ' in ' + $this_buildDeserializationNamesMap));
    }
    // Inline function 'kotlin.collections.set' call
    _this__u8e3s4.s(name, index);
  }
  function deserializationNamesMap$lambda($descriptor, $this_deserializationNamesMap) {
    return function () {
      return buildDeserializationNamesMap($descriptor, $this_deserializationNamesMap);
    };
  }
  function serializationNamesIndices$lambda($this_serializationNamesIndices, $strategy) {
    return function () {
      var tmp = 0;
      var tmp_0 = $this_serializationNamesIndices.l4c();
      // Inline function 'kotlin.arrayOfNulls' call
      var tmp_1 = fillArrayVal(Array(tmp_0), null);
      while (tmp < tmp_0) {
        var tmp_2 = tmp;
        var baseName = $this_serializationNamesIndices.r4c(tmp_2);
        tmp_1[tmp_2] = $strategy.g50($this_serializationNamesIndices, tmp_2, baseName);
        tmp = tmp + 1 | 0;
      }
      return tmp_1;
    };
  }
  var properties_initialized_JsonNamesMap_kt_ljpf42;
  function _init_properties_JsonNamesMap_kt__cbbp0k() {
    if (!properties_initialized_JsonNamesMap_kt_ljpf42) {
      properties_initialized_JsonNamesMap_kt_ljpf42 = true;
      JsonDeserializationNamesKey = new Key();
      JsonSerializationNamesKey = new Key();
    }
  }
  function Tombstone() {
  }
  var Tombstone_instance;
  function Tombstone_getInstance() {
    return Tombstone_instance;
  }
  function resize($this) {
    var newSize = imul($this.j50_1, 2);
    $this.h50_1 = copyOf($this.h50_1, newSize);
    $this.i50_1 = copyOf_0($this.i50_1, newSize);
  }
  function JsonPath() {
    var tmp = this;
    // Inline function 'kotlin.arrayOfNulls' call
    tmp.h50_1 = fillArrayVal(Array(8), null);
    var tmp_0 = this;
    var tmp_1 = 0;
    var tmp_2 = new Int32Array(8);
    while (tmp_1 < 8) {
      tmp_2[tmp_1] = -1;
      tmp_1 = tmp_1 + 1 | 0;
    }
    tmp_0.i50_1 = tmp_2;
    this.j50_1 = -1;
  }
  protoOf(JsonPath).k50 = function (sd) {
    this.j50_1 = this.j50_1 + 1 | 0;
    var depth = this.j50_1;
    if (depth === this.h50_1.length) {
      resize(this);
    }
    this.h50_1[depth] = sd;
  };
  protoOf(JsonPath).l50 = function (index) {
    this.i50_1[this.j50_1] = index;
  };
  protoOf(JsonPath).m50 = function (key) {
    var tmp;
    if (!(this.i50_1[this.j50_1] === -2)) {
      this.j50_1 = this.j50_1 + 1 | 0;
      tmp = this.j50_1 === this.h50_1.length;
    } else {
      tmp = false;
    }
    if (tmp) {
      resize(this);
    }
    this.h50_1[this.j50_1] = key;
    this.i50_1[this.j50_1] = -2;
  };
  protoOf(JsonPath).n50 = function () {
    if (this.i50_1[this.j50_1] === -2) {
      this.h50_1[this.j50_1] = Tombstone_instance;
    }
  };
  protoOf(JsonPath).o50 = function () {
    var depth = this.j50_1;
    if (this.i50_1[depth] === -2) {
      this.i50_1[depth] = -1;
      this.j50_1 = this.j50_1 - 1 | 0;
    }
    if (!(this.j50_1 === -1)) {
      this.j50_1 = this.j50_1 - 1 | 0;
    }
  };
  protoOf(JsonPath).p50 = function () {
    // Inline function 'kotlin.text.buildString' call
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlin.apply' call
    var this_0 = StringBuilder_init_$Create$();
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlinx.serialization.json.internal.JsonPath.getPath.<anonymous>' call
    this_0.y5('$');
    // Inline function 'kotlin.repeat' call
    var times = this.j50_1 + 1 | 0;
    // Inline function 'kotlin.contracts.contract' call
    var inductionVariable = 0;
    if (inductionVariable < times)
      do {
        var index = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        // Inline function 'kotlinx.serialization.json.internal.JsonPath.getPath.<anonymous>.<anonymous>' call
        var element = this.h50_1[index];
        if (!(element == null) ? isInterface(element, SerialDescriptor) : false) {
          if (equals(element.n4c(), LIST_getInstance())) {
            if (!(this.i50_1[index] === -1)) {
              this_0.y5('[');
              this_0.v8(this.i50_1[index]);
              this_0.y5(']');
            }
          } else {
            var idx = this.i50_1[index];
            if (idx >= 0) {
              this_0.y5('.');
              this_0.y5(element.r4c(idx));
            }
          }
        } else {
          if (!(element === Tombstone_instance)) {
            this_0.y5('[');
            this_0.y5("'");
            this_0.x5(element);
            this_0.y5("'");
            this_0.y5(']');
          }
        }
      }
       while (inductionVariable < times);
    return this_0.toString();
  };
  protoOf(JsonPath).toString = function () {
    return this.p50();
  };
  function encodeByWriter(json, writer, serializer, value) {
    var tmp = WriteMode_OBJ_getInstance();
    // Inline function 'kotlin.arrayOfNulls' call
    var size = get_entries().u();
    var tmp$ret$0 = fillArrayVal(Array(size), null);
    var encoder = StreamingJsonEncoder_init_$Create$(writer, json, tmp, tmp$ret$0);
    encoder.e4g(serializer, value);
  }
  function readObject($this) {
    // Inline function 'kotlinx.serialization.json.internal.JsonTreeReader.readObjectImpl' call
    var lastToken = $this.y50_1.c51(get_TC_BEGIN_OBJ());
    if ($this.y50_1.d51() === get_TC_COMMA()) {
      $this.y50_1.c50('Unexpected leading comma');
    }
    // Inline function 'kotlin.collections.linkedMapOf' call
    var result = LinkedHashMap_init_$Create$();
    $l$loop: while ($this.y50_1.e51()) {
      var key = $this.z50_1 ? $this.y50_1.g51() : $this.y50_1.f51();
      $this.y50_1.c51(get_TC_COLON());
      // Inline function 'kotlinx.serialization.json.internal.JsonTreeReader.readObject.<anonymous>' call
      var element = $this.h51();
      // Inline function 'kotlin.collections.set' call
      result.s(key, element);
      lastToken = $this.y50_1.i51();
      var tmp0_subject = lastToken;
      if (tmp0_subject !== get_TC_COMMA())
        if (tmp0_subject === get_TC_END_OBJ())
          break $l$loop;
        else {
          $this.y50_1.c50('Expected end of the object or comma');
        }
    }
    if (lastToken === get_TC_BEGIN_OBJ()) {
      $this.y50_1.c51(get_TC_END_OBJ());
    } else if (lastToken === get_TC_COMMA()) {
      if (!$this.a51_1) {
        invalidTrailingComma($this.y50_1);
      }
      $this.y50_1.c51(get_TC_END_OBJ());
    }
    return new JsonObject(result);
  }
  function readObject_0(_this__u8e3s4, $this, $completion) {
    var tmp = new $readObjectCOROUTINE$0($this, _this__u8e3s4, $completion);
    tmp.jd_1 = Unit_instance;
    tmp.kd_1 = null;
    return tmp.ud();
  }
  function readArray($this) {
    var lastToken = $this.y50_1.i51();
    if ($this.y50_1.d51() === get_TC_COMMA()) {
      $this.y50_1.c50('Unexpected leading comma');
    }
    // Inline function 'kotlin.collections.arrayListOf' call
    var result = ArrayList_init_$Create$();
    while ($this.y50_1.e51()) {
      var element = $this.h51();
      result.i1(element);
      lastToken = $this.y50_1.i51();
      if (!(lastToken === get_TC_COMMA())) {
        // Inline function 'kotlinx.serialization.json.internal.AbstractJsonLexer.require' call
        var this_0 = $this.y50_1;
        var condition = lastToken === get_TC_END_LIST();
        var position = this_0.d4w_1;
        if (!condition) {
          // Inline function 'kotlinx.serialization.json.internal.JsonTreeReader.readArray.<anonymous>' call
          var tmp$ret$1 = 'Expected end of the array or comma';
          this_0.c50(tmp$ret$1, position);
        }
      }
    }
    if (lastToken === get_TC_BEGIN_LIST()) {
      $this.y50_1.c51(get_TC_END_LIST());
    } else if (lastToken === get_TC_COMMA()) {
      if (!$this.a51_1) {
        invalidTrailingComma($this.y50_1, 'array');
      }
      $this.y50_1.c51(get_TC_END_LIST());
    }
    return new JsonArray(result);
  }
  function readValue($this, isString) {
    var tmp;
    if ($this.z50_1 ? true : !isString) {
      tmp = $this.y50_1.g51();
    } else {
      tmp = $this.y50_1.f51();
    }
    var string = tmp;
    if (!isString ? string === get_NULL() : false)
      return JsonNull_getInstance();
    return new JsonLiteral(string, isString);
  }
  function readDeepRecursive($this) {
    return invoke(new DeepRecursiveFunction(JsonTreeReader$readDeepRecursive$slambda_0($this, null)), Unit_instance);
  }
  function JsonTreeReader$readDeepRecursive$slambda(this$0, resultContinuation) {
    this.f52_1 = this$0;
    CoroutineImpl.call(this, resultContinuation);
  }
  protoOf(JsonTreeReader$readDeepRecursive$slambda).k52 = function ($this$$receiver, it, $completion) {
    var tmp = this.l52($this$$receiver, it, $completion);
    tmp.jd_1 = Unit_instance;
    tmp.kd_1 = null;
    return tmp.ud();
  };
  protoOf(JsonTreeReader$readDeepRecursive$slambda).um = function (p1, p2, $completion) {
    var tmp = p1 instanceof DeepRecursiveScope ? p1 : THROW_CCE();
    return this.k52(tmp, p2 instanceof Unit ? p2 : THROW_CCE(), $completion);
  };
  protoOf(JsonTreeReader$readDeepRecursive$slambda).ud = function () {
    var suspendResult = this.jd_1;
    $sm: do
      try {
        var tmp = this.hd_1;
        switch (tmp) {
          case 0:
            this.id_1 = 3;
            this.i52_1 = this.f52_1.y50_1.d51();
            if (this.i52_1 === get_TC_STRING()) {
              this.j52_1 = readValue(this.f52_1, true);
              this.hd_1 = 2;
              continue $sm;
            } else {
              if (this.i52_1 === get_TC_OTHER()) {
                this.j52_1 = readValue(this.f52_1, false);
                this.hd_1 = 2;
                continue $sm;
              } else {
                if (this.i52_1 === get_TC_BEGIN_OBJ()) {
                  this.hd_1 = 1;
                  suspendResult = readObject_0(this.g52_1, this.f52_1, this);
                  if (suspendResult === get_COROUTINE_SUSPENDED()) {
                    return suspendResult;
                  }
                  continue $sm;
                } else {
                  if (this.i52_1 === get_TC_BEGIN_LIST()) {
                    this.j52_1 = readArray(this.f52_1);
                    this.hd_1 = 2;
                    continue $sm;
                  } else {
                    var tmp_0 = this;
                    this.f52_1.y50_1.c50("Can't begin reading element, unexpected token");
                  }
                }
              }
            }

            break;
          case 1:
            this.j52_1 = suspendResult;
            this.hd_1 = 2;
            continue $sm;
          case 2:
            return this.j52_1;
          case 3:
            throw this.kd_1;
        }
      } catch ($p) {
        var e = $p;
        if (this.id_1 === 3) {
          throw e;
        } else {
          this.hd_1 = this.id_1;
          this.kd_1 = e;
        }
      }
     while (true);
  };
  protoOf(JsonTreeReader$readDeepRecursive$slambda).l52 = function ($this$$receiver, it, completion) {
    var i = new JsonTreeReader$readDeepRecursive$slambda(this.f52_1, completion);
    i.g52_1 = $this$$receiver;
    i.h52_1 = it;
    return i;
  };
  function JsonTreeReader$readDeepRecursive$slambda_0(this$0, resultContinuation) {
    var i = new JsonTreeReader$readDeepRecursive$slambda(this$0, resultContinuation);
    var l = function ($this$$receiver, it, $completion) {
      return i.k52($this$$receiver, it, $completion);
    };
    l.$arity = 2;
    return l;
  }
  function $readObjectCOROUTINE$0(_this__u8e3s4, _this__u8e3s4_0, resultContinuation) {
    CoroutineImpl.call(this, resultContinuation);
    this.r51_1 = _this__u8e3s4;
    this.s51_1 = _this__u8e3s4_0;
  }
  protoOf($readObjectCOROUTINE$0).ud = function () {
    var suspendResult = this.jd_1;
    $sm: do
      try {
        var tmp = this.hd_1;
        switch (tmp) {
          case 0:
            this.id_1 = 5;
            var tmp_0 = this;
            tmp_0.t51_1 = this.r51_1;
            this.u51_1 = this.t51_1.y50_1.c51(get_TC_BEGIN_OBJ());
            if (this.t51_1.y50_1.d51() === get_TC_COMMA()) {
              this.t51_1.y50_1.c50('Unexpected leading comma');
            }

            var tmp_1 = this;
            tmp_1.v51_1 = LinkedHashMap_init_$Create$();
            this.hd_1 = 1;
            continue $sm;
          case 1:
            if (!this.t51_1.y50_1.e51()) {
              this.hd_1 = 4;
              continue $sm;
            }

            this.w51_1 = this.t51_1.z50_1 ? this.t51_1.y50_1.g51() : this.t51_1.y50_1.f51();
            this.t51_1.y50_1.c51(get_TC_COLON());
            this.hd_1 = 2;
            suspendResult = this.s51_1.mm(Unit_instance, this);
            if (suspendResult === get_COROUTINE_SUSPENDED()) {
              return suspendResult;
            }

            continue $sm;
          case 2:
            var element = suspendResult;
            var this_0 = this.v51_1;
            var key = this.w51_1;
            this_0.s(key, element);
            this.u51_1 = this.t51_1.y50_1.i51();
            var tmp0_subject = this.u51_1;
            if (tmp0_subject === get_TC_COMMA()) {
              this.hd_1 = 3;
              continue $sm;
            } else {
              if (tmp0_subject === get_TC_END_OBJ()) {
                this.hd_1 = 4;
                continue $sm;
              } else {
                this.t51_1.y50_1.c50('Expected end of the object or comma');
              }
            }

            break;
          case 3:
            this.hd_1 = 1;
            continue $sm;
          case 4:
            if (this.u51_1 === get_TC_BEGIN_OBJ()) {
              this.t51_1.y50_1.c51(get_TC_END_OBJ());
            } else if (this.u51_1 === get_TC_COMMA()) {
              if (!this.t51_1.a51_1) {
                invalidTrailingComma(this.t51_1.y50_1);
              }
              this.t51_1.y50_1.c51(get_TC_END_OBJ());
            }

            return new JsonObject(this.v51_1);
          case 5:
            throw this.kd_1;
        }
      } catch ($p) {
        var e = $p;
        if (this.id_1 === 5) {
          throw e;
        } else {
          this.hd_1 = this.id_1;
          this.kd_1 = e;
        }
      }
     while (true);
  };
  function JsonTreeReader(configuration, lexer) {
    this.y50_1 = lexer;
    this.z50_1 = configuration.a4x_1;
    this.a51_1 = configuration.m4x_1;
    this.b51_1 = 0;
  }
  protoOf(JsonTreeReader).h51 = function () {
    var token = this.y50_1.d51();
    var tmp;
    if (token === get_TC_STRING()) {
      tmp = readValue(this, true);
    } else if (token === get_TC_OTHER()) {
      tmp = readValue(this, false);
    } else if (token === get_TC_BEGIN_OBJ()) {
      var tmp_0;
      this.b51_1 = this.b51_1 + 1 | 0;
      if (this.b51_1 === 200) {
        tmp_0 = readDeepRecursive(this);
      } else {
        tmp_0 = readObject(this);
      }
      var result = tmp_0;
      this.b51_1 = this.b51_1 - 1 | 0;
      tmp = result;
    } else if (token === get_TC_BEGIN_LIST()) {
      tmp = readArray(this);
    } else {
      this.y50_1.c50('Cannot read Json element because of unexpected ' + tokenDescription(token));
    }
    return tmp;
  };
  function classDiscriminator(_this__u8e3s4, json) {
    var tmp0_iterator = _this__u8e3s4.k4c().w();
    while (tmp0_iterator.f()) {
      var annotation = tmp0_iterator.e();
      if (annotation instanceof JsonClassDiscriminator)
        return annotation.m52_1;
    }
    return json.q4v_1.h4x_1;
  }
  function decodeSerializableValuePolymorphic(_this__u8e3s4, deserializer) {
    var tmp;
    if (!(deserializer instanceof AbstractPolymorphicSerializer)) {
      tmp = true;
    } else {
      tmp = _this__u8e3s4.r4x().q4v_1.g4x_1;
    }
    if (tmp) {
      return deserializer.x4a(_this__u8e3s4);
    }
    var discriminator = classDiscriminator(deserializer.v4a(), _this__u8e3s4.r4x());
    // Inline function 'kotlinx.serialization.json.internal.cast' call
    var value = _this__u8e3s4.p4x();
    var descriptor = deserializer.v4a();
    if (!(value instanceof JsonObject)) {
      throw JsonDecodingException_1(-1, 'Expected ' + getKClass(JsonObject) + ' as the serialized body of ' + descriptor.v4b() + ', but had ' + getKClassFromExpression(value));
    }
    var jsonTree = value;
    var tmp0_safe_receiver = jsonTree.ba(discriminator);
    var tmp1_safe_receiver = tmp0_safe_receiver == null ? null : get_jsonPrimitive(tmp0_safe_receiver);
    var type = tmp1_safe_receiver == null ? null : get_contentOrNull(tmp1_safe_receiver);
    var tmp_0;
    try {
      tmp_0 = findPolymorphicSerializer(deserializer, _this__u8e3s4, type);
    } catch ($p) {
      var tmp_1;
      if ($p instanceof SerializationException) {
        var it = $p;
        throw JsonDecodingException_0(-1, ensureNotNull(it.message), jsonTree.toString());
      } else {
        throw $p;
      }
    }
    var tmp_2 = tmp_0;
    var actualSerializer = isInterface(tmp_2, DeserializationStrategy) ? tmp_2 : THROW_CCE();
    return readPolymorphicJson(_this__u8e3s4.r4x(), discriminator, jsonTree, actualSerializer);
  }
  function validateIfSealed(serializer, actualSerializer, classDiscriminator) {
    if (!(serializer instanceof SealedClassSerializer))
      return Unit_instance;
    if (jsonCachedSerialNames(actualSerializer.v4a()).a1(classDiscriminator)) {
      var baseName = serializer.v4a().v4b();
      var actualName = actualSerializer.v4a().v4b();
      // Inline function 'kotlin.error' call
      var message = "Sealed class '" + actualName + "' cannot be serialized as base class '" + baseName + "' because" + (" it has property name that conflicts with JSON class discriminator '" + classDiscriminator + "'. ") + 'You can either change class discriminator in JsonConfiguration, ' + 'rename property with @SerialName annotation or fall back to array polymorphism';
      throw IllegalStateException_init_$Create$(toString(message));
    }
  }
  function checkKind(kind) {
    if (kind instanceof ENUM) {
      // Inline function 'kotlin.error' call
      var message = "Enums cannot be serialized polymorphically with 'type' parameter. You can use 'JsonBuilder.useArrayPolymorphism' instead";
      throw IllegalStateException_init_$Create$(toString(message));
    }
    if (kind instanceof PrimitiveKind) {
      // Inline function 'kotlin.error' call
      var message_0 = "Primitives cannot be serialized polymorphically with 'type' parameter. You can use 'JsonBuilder.useArrayPolymorphism' instead";
      throw IllegalStateException_init_$Create$(toString(message_0));
    }
    if (kind instanceof PolymorphicKind) {
      // Inline function 'kotlin.error' call
      var message_1 = 'Actual serializer for polymorphic cannot be polymorphic itself';
      throw IllegalStateException_init_$Create$(toString(message_1));
    }
  }
  function validateIfSealed$accessor$1rk9rdt(serializer, actualSerializer, classDiscriminator) {
    return validateIfSealed(serializer, actualSerializer, classDiscriminator);
  }
  function checkKind_0($this, descriptor, actualClass) {
    var kind = descriptor.n4c();
    var tmp;
    if (kind instanceof PolymorphicKind) {
      tmp = true;
    } else {
      tmp = equals(kind, CONTEXTUAL_getInstance());
    }
    if (tmp) {
      throw IllegalArgumentException_init_$Create$('Serializer for ' + actualClass.f7() + " can't be registered as a subclass for polymorphic serialization " + ('because its kind ' + kind + ' is not concrete. To work with multiple hierarchies, register it as a base class.'));
    }
    if ($this.n52_1)
      return Unit_instance;
    var tmp_0;
    var tmp_1;
    if (equals(kind, LIST_getInstance()) ? true : equals(kind, MAP_getInstance())) {
      tmp_1 = true;
    } else {
      tmp_1 = kind instanceof PrimitiveKind;
    }
    if (tmp_1) {
      tmp_0 = true;
    } else {
      tmp_0 = kind instanceof ENUM;
    }
    if (tmp_0) {
      throw IllegalArgumentException_init_$Create$('Serializer for ' + actualClass.f7() + ' of kind ' + kind + ' cannot be serialized polymorphically with class discriminator.');
    }
  }
  function checkDiscriminatorCollisions($this, descriptor, actualClass) {
    var inductionVariable = 0;
    var last = descriptor.l4c();
    if (inductionVariable < last)
      do {
        var i = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        var name = descriptor.r4c(i);
        if (name === $this.o52_1) {
          throw IllegalArgumentException_init_$Create$('Polymorphic serializer for ' + actualClass + " has property '" + name + "' that conflicts " + 'with JSON class discriminator. You can either change class discriminator in JsonConfiguration, ' + 'rename property with @SerialName annotation ' + 'or fall back to array polymorphism');
        }
      }
       while (inductionVariable < last);
  }
  function PolymorphismValidator(useArrayPolymorphism, discriminator) {
    this.n52_1 = useArrayPolymorphism;
    this.o52_1 = discriminator;
  }
  protoOf(PolymorphismValidator).v4u = function (kClass, provider) {
  };
  protoOf(PolymorphismValidator).y4u = function (baseClass, actualClass, actualSerializer) {
    var descriptor = actualSerializer.v4a();
    checkKind_0(this, descriptor, actualClass);
    if (!this.n52_1) {
      checkDiscriminatorCollisions(this, descriptor, actualClass);
    }
  };
  protoOf(PolymorphismValidator).z4u = function (baseClass, defaultSerializerProvider) {
  };
  protoOf(PolymorphismValidator).a4v = function (baseClass, defaultDeserializerProvider) {
  };
  function Key() {
  }
  function DescriptorSchemaCache() {
    this.d50_1 = createMapForCache(16);
  }
  protoOf(DescriptorSchemaCache).p52 = function (descriptor, key, value) {
    // Inline function 'kotlin.collections.set' call
    // Inline function 'kotlin.collections.getOrPut' call
    var this_0 = this.d50_1;
    var value_0 = this_0.q(descriptor);
    var tmp;
    if (value_0 == null) {
      // Inline function 'kotlinx.serialization.json.internal.DescriptorSchemaCache.set.<anonymous>' call
      var answer = createMapForCache(2);
      this_0.s(descriptor, answer);
      tmp = answer;
    } else {
      tmp = value_0;
    }
    var this_1 = tmp;
    var key_0 = key instanceof Key ? key : THROW_CCE();
    var value_1 = !(value == null) ? value : THROW_CCE();
    this_1.s(key_0, value_1);
  };
  protoOf(DescriptorSchemaCache).e50 = function (descriptor, key, defaultValue) {
    var tmp0_safe_receiver = this.q52(descriptor, key);
    if (tmp0_safe_receiver == null)
      null;
    else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      return tmp0_safe_receiver;
    }
    var value = defaultValue();
    this.p52(descriptor, key, value);
    return value;
  };
  protoOf(DescriptorSchemaCache).q52 = function (descriptor, key) {
    var tmp0_safe_receiver = this.d50_1.q(descriptor);
    var tmp;
    if (tmp0_safe_receiver == null) {
      tmp = null;
    } else {
      tmp = tmp0_safe_receiver.q(key instanceof Key ? key : THROW_CCE());
    }
    var tmp_0 = tmp;
    return !(tmp_0 == null) ? tmp_0 : null;
  };
  function DiscriminatorHolder(discriminatorToSkip) {
    this.r52_1 = discriminatorToSkip;
  }
  function trySkip(_this__u8e3s4, $this, unknownKey) {
    if (_this__u8e3s4 == null)
      return false;
    if (_this__u8e3s4.r52_1 === unknownKey) {
      _this__u8e3s4.r52_1 = null;
      return true;
    }
    return false;
  }
  function skipLeftoverElements($this, descriptor) {
    $l$loop: while (true) {
      var tmp = $this.d4f(descriptor);
      if (!!(tmp === -1)) {
        break $l$loop;
      }
    }
  }
  function checkLeadingComma($this) {
    if ($this.x4v_1.d51() === get_TC_COMMA()) {
      $this.x4v_1.c50('Unexpected leading comma');
    }
  }
  function decodeMapIndex($this) {
    var hasComma = false;
    var decodingKey = !(($this.z4v_1 % 2 | 0) === 0);
    if (decodingKey) {
      if (!($this.z4v_1 === -1)) {
        hasComma = $this.x4v_1.t52();
      }
    } else {
      $this.x4v_1.s52(get_COLON());
    }
    var tmp;
    if ($this.x4v_1.e51()) {
      if (decodingKey) {
        if ($this.z4v_1 === -1) {
          // Inline function 'kotlinx.serialization.json.internal.AbstractJsonLexer.require' call
          var this_0 = $this.x4v_1;
          var condition = !hasComma;
          var position = this_0.d4w_1;
          if (!condition) {
            // Inline function 'kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeMapIndex.<anonymous>' call
            var tmp$ret$0 = 'Unexpected leading comma';
            this_0.c50(tmp$ret$0, position);
          }
        } else {
          // Inline function 'kotlinx.serialization.json.internal.AbstractJsonLexer.require' call
          var this_1 = $this.x4v_1;
          var condition_0 = hasComma;
          var position_0 = this_1.d4w_1;
          if (!condition_0) {
            // Inline function 'kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeMapIndex.<anonymous>' call
            var tmp$ret$1 = 'Expected comma after the key-value pair';
            this_1.c50(tmp$ret$1, position_0);
          }
        }
      }
      $this.z4v_1 = $this.z4v_1 + 1 | 0;
      tmp = $this.z4v_1;
    } else {
      if (hasComma ? !$this.v4v_1.q4v_1.m4x_1 : false) {
        invalidTrailingComma($this.x4v_1);
      }
      tmp = -1;
    }
    return tmp;
  }
  function coerceInputValue($this, descriptor, index) {
    var tmp$ret$1;
    $l$block_2: {
      // Inline function 'kotlinx.serialization.json.internal.tryCoerceValue' call
      var this_0 = $this.v4v_1;
      var elementDescriptor = descriptor.p4c(index);
      var tmp;
      if (!elementDescriptor.g4c()) {
        // Inline function 'kotlinx.serialization.json.internal.StreamingJsonDecoder.coerceInputValue.<anonymous>' call
        tmp = $this.x4v_1.u52(true);
      } else {
        tmp = false;
      }
      if (tmp) {
        tmp$ret$1 = true;
        break $l$block_2;
      }
      if (equals(elementDescriptor.n4c(), ENUM_getInstance())) {
        var tmp_0;
        if (elementDescriptor.g4c()) {
          // Inline function 'kotlinx.serialization.json.internal.StreamingJsonDecoder.coerceInputValue.<anonymous>' call
          tmp_0 = $this.x4v_1.u52(false);
        } else {
          tmp_0 = false;
        }
        if (tmp_0) {
          tmp$ret$1 = false;
          break $l$block_2;
        }
        // Inline function 'kotlinx.serialization.json.internal.StreamingJsonDecoder.coerceInputValue.<anonymous>' call
        var tmp0_elvis_lhs = $this.x4v_1.v52($this.b4w_1.a4x_1);
        var tmp_1;
        if (tmp0_elvis_lhs == null) {
          tmp$ret$1 = false;
          break $l$block_2;
        } else {
          tmp_1 = tmp0_elvis_lhs;
        }
        var enumValue = tmp_1;
        var enumIndex = getJsonNameIndex(elementDescriptor, this_0, enumValue);
        if (enumIndex === -3) {
          // Inline function 'kotlinx.serialization.json.internal.StreamingJsonDecoder.coerceInputValue.<anonymous>' call
          $this.x4v_1.f51();
          tmp$ret$1 = true;
          break $l$block_2;
        }
      }
      tmp$ret$1 = false;
    }
    return tmp$ret$1;
  }
  function decodeObjectIndex($this, descriptor) {
    var hasComma = $this.x4v_1.t52();
    while ($this.x4v_1.e51()) {
      hasComma = false;
      var key = decodeStringKey($this);
      $this.x4v_1.s52(get_COLON());
      var index = getJsonNameIndex(descriptor, $this.v4v_1, key);
      var tmp;
      if (!(index === -3)) {
        var tmp_0;
        if ($this.b4w_1.f4x_1 ? coerceInputValue($this, descriptor, index) : false) {
          hasComma = $this.x4v_1.t52();
          tmp_0 = false;
        } else {
          var tmp0_safe_receiver = $this.c4w_1;
          if (tmp0_safe_receiver == null)
            null;
          else {
            tmp0_safe_receiver.q4k(index);
          }
          return index;
        }
        tmp = tmp_0;
      } else {
        tmp = true;
      }
      var isUnknown = tmp;
      if (isUnknown) {
        hasComma = handleUnknown($this, key);
      }
    }
    if (hasComma ? !$this.v4v_1.q4v_1.m4x_1 : false) {
      invalidTrailingComma($this.x4v_1);
    }
    var tmp1_safe_receiver = $this.c4w_1;
    var tmp2_elvis_lhs = tmp1_safe_receiver == null ? null : tmp1_safe_receiver.r4k();
    var tmp_1;
    if (tmp2_elvis_lhs == null) {
      tmp_1 = -1;
    } else {
      tmp_1 = tmp2_elvis_lhs;
    }
    return tmp_1;
  }
  function handleUnknown($this, key) {
    if ($this.b4w_1.z4w_1 ? true : trySkip($this.a4w_1, $this, key)) {
      $this.x4v_1.x52($this.b4w_1.a4x_1);
    } else {
      $this.x4v_1.w52(key);
    }
    return $this.x4v_1.t52();
  }
  function decodeListIndex($this) {
    var hasComma = $this.x4v_1.t52();
    var tmp;
    if ($this.x4v_1.e51()) {
      if (!($this.z4v_1 === -1) ? !hasComma : false) {
        $this.x4v_1.c50('Expected end of the array or comma');
      }
      $this.z4v_1 = $this.z4v_1 + 1 | 0;
      tmp = $this.z4v_1;
    } else {
      if (hasComma ? !$this.v4v_1.q4v_1.m4x_1 : false) {
        invalidTrailingComma($this.x4v_1, 'array');
      }
      tmp = -1;
    }
    return tmp;
  }
  function decodeStringKey($this) {
    var tmp;
    if ($this.b4w_1.a4x_1) {
      tmp = $this.x4v_1.z52();
    } else {
      tmp = $this.x4v_1.y52();
    }
    return tmp;
  }
  function StreamingJsonDecoder(json, mode, lexer, descriptor, discriminatorHolder) {
    AbstractDecoder.call(this);
    this.v4v_1 = json;
    this.w4v_1 = mode;
    this.x4v_1 = lexer;
    this.y4v_1 = this.v4v_1.y4b();
    this.z4v_1 = -1;
    this.a4w_1 = discriminatorHolder;
    this.b4w_1 = this.v4v_1.q4v_1;
    this.c4w_1 = this.b4w_1.d4x_1 ? null : new JsonElementMarker(descriptor);
  }
  protoOf(StreamingJsonDecoder).r4x = function () {
    return this.v4v_1;
  };
  protoOf(StreamingJsonDecoder).y4b = function () {
    return this.y4v_1;
  };
  protoOf(StreamingJsonDecoder).p4x = function () {
    return (new JsonTreeReader(this.v4v_1.q4v_1, this.x4v_1)).h51();
  };
  protoOf(StreamingJsonDecoder).m4e = function (deserializer) {
    try {
      var tmp;
      if (!(deserializer instanceof AbstractPolymorphicSerializer)) {
        tmp = true;
      } else {
        tmp = this.v4v_1.q4v_1.g4x_1;
      }
      if (tmp) {
        return deserializer.x4a(this);
      }
      var discriminator = classDiscriminator(deserializer.v4a(), this.v4v_1);
      var tmp0_elvis_lhs = this.x4v_1.a53(discriminator, this.b4w_1.a4x_1);
      var tmp_0;
      if (tmp0_elvis_lhs == null) {
        return decodeSerializableValuePolymorphic(this, isInterface(deserializer, DeserializationStrategy) ? deserializer : THROW_CCE());
      } else {
        tmp_0 = tmp0_elvis_lhs;
      }
      var type = tmp_0;
      var tmp_1;
      try {
        tmp_1 = findPolymorphicSerializer(deserializer, this, type);
      } catch ($p) {
        var tmp_2;
        if ($p instanceof SerializationException) {
          var it = $p;
          var message = removeSuffix(substringBefore(ensureNotNull(it.message), _Char___init__impl__6a9atx(10)), '.');
          var hint = substringAfter(ensureNotNull(it.message), _Char___init__impl__6a9atx(10), '');
          this.x4v_1.c50(message, VOID, hint);
        } else {
          throw $p;
        }
        tmp_1 = tmp_2;
      }
      var tmp_3 = tmp_1;
      var actualSerializer = isInterface(tmp_3, DeserializationStrategy) ? tmp_3 : THROW_CCE();
      this.a4w_1 = new DiscriminatorHolder(discriminator);
      return actualSerializer.x4a(this);
    } catch ($p) {
      if ($p instanceof MissingFieldException) {
        var e = $p;
        if (contains_0(ensureNotNull(e.message), 'at path'))
          throw e;
        throw new MissingFieldException(e.b4c_1, plus(e.message, ' at path: ') + this.x4v_1.e4w_1.p50(), e);
      } else {
        throw $p;
      }
    }
  };
  protoOf(StreamingJsonDecoder).n4e = function (descriptor) {
    var newMode = switchMode(this.v4v_1, descriptor);
    this.x4v_1.e4w_1.k50(descriptor);
    this.x4v_1.s52(newMode.d53_1);
    checkLeadingComma(this);
    var tmp;
    switch (newMode.za_1) {
      case 1:
      case 2:
      case 3:
        tmp = new StreamingJsonDecoder(this.v4v_1, newMode, this.x4v_1, descriptor, this.a4w_1);
        break;
      default:
        var tmp_0;
        if (this.w4v_1.equals(newMode) ? this.v4v_1.q4v_1.d4x_1 : false) {
          tmp_0 = this;
        } else {
          tmp_0 = new StreamingJsonDecoder(this.v4v_1, newMode, this.x4v_1, descriptor, this.a4w_1);
        }

        tmp = tmp_0;
        break;
    }
    return tmp;
  };
  protoOf(StreamingJsonDecoder).o4e = function (descriptor) {
    if (this.v4v_1.q4v_1.z4w_1 ? descriptor.l4c() === 0 : false) {
      skipLeftoverElements(this, descriptor);
    }
    if (this.x4v_1.t52() ? !this.v4v_1.q4v_1.m4x_1 : false) {
      invalidTrailingComma(this.x4v_1, '');
    }
    this.x4v_1.s52(this.w4v_1.e53_1);
    this.x4v_1.e4w_1.o50();
  };
  protoOf(StreamingJsonDecoder).y4d = function () {
    var tmp;
    var tmp0_safe_receiver = this.c4w_1;
    var tmp1_elvis_lhs = tmp0_safe_receiver == null ? null : tmp0_safe_receiver.a50_1;
    if (!(tmp1_elvis_lhs == null ? false : tmp1_elvis_lhs)) {
      tmp = !this.x4v_1.f53();
    } else {
      tmp = false;
    }
    return tmp;
  };
  protoOf(StreamingJsonDecoder).z4d = function () {
    return null;
  };
  protoOf(StreamingJsonDecoder).z4e = function (descriptor, index, deserializer, previousValue) {
    var isMapKey = this.w4v_1.equals(WriteMode_MAP_getInstance()) ? (index & 1) === 0 : false;
    if (isMapKey) {
      this.x4v_1.e4w_1.n50();
    }
    var value = protoOf(AbstractDecoder).z4e.call(this, descriptor, index, deserializer, previousValue);
    if (isMapKey) {
      this.x4v_1.e4w_1.m50(value);
    }
    return value;
  };
  protoOf(StreamingJsonDecoder).d4f = function (descriptor) {
    var index;
    switch (this.w4v_1.za_1) {
      case 0:
        index = decodeObjectIndex(this, descriptor);
        break;
      case 2:
        index = decodeMapIndex(this);
        break;
      default:
        index = decodeListIndex(this);
        break;
    }
    if (!this.w4v_1.equals(WriteMode_MAP_getInstance())) {
      this.x4v_1.e4w_1.l50(index);
    }
    return index;
  };
  protoOf(StreamingJsonDecoder).a4e = function () {
    return this.x4v_1.g53();
  };
  protoOf(StreamingJsonDecoder).b4e = function () {
    var value = this.x4v_1.u4x();
    if (!value.equals(toLong(value.xc()))) {
      this.x4v_1.c50("Failed to parse byte for input '" + value.toString() + "'");
    }
    return value.xc();
  };
  protoOf(StreamingJsonDecoder).c4e = function () {
    var value = this.x4v_1.u4x();
    if (!value.equals(toLong(value.yc()))) {
      this.x4v_1.c50("Failed to parse short for input '" + value.toString() + "'");
    }
    return value.yc();
  };
  protoOf(StreamingJsonDecoder).d4e = function () {
    var value = this.x4v_1.u4x();
    if (!value.equals(toLong(value.mb()))) {
      this.x4v_1.c50("Failed to parse int for input '" + value.toString() + "'");
    }
    return value.mb();
  };
  protoOf(StreamingJsonDecoder).e4e = function () {
    return this.x4v_1.u4x();
  };
  protoOf(StreamingJsonDecoder).f4e = function () {
    var tmp$ret$4;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.parseString' call
      var this_0 = this.x4v_1;
      var input = this_0.g51();
      try {
        // Inline function 'kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeFloat.<anonymous>' call
        // Inline function 'kotlin.text.toFloat' call
        // Inline function 'kotlin.js.unsafeCast' call
        // Inline function 'kotlin.js.asDynamic' call
        tmp$ret$4 = toDouble(input);
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          this_0.c50("Failed to parse type '" + 'float' + "' for input '" + input + "'");
        } else {
          throw $p;
        }
      }
    }
    var result = tmp$ret$4;
    var specialFp = this.v4v_1.q4v_1.i4x_1;
    if (specialFp ? true : isFinite(result))
      return result;
    throwInvalidFloatingPointDecoded(this.x4v_1, result);
  };
  protoOf(StreamingJsonDecoder).g4e = function () {
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.parseString' call
      var this_0 = this.x4v_1;
      var input = this_0.g51();
      try {
        // Inline function 'kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeDouble.<anonymous>' call
        tmp$ret$1 = toDouble(input);
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          this_0.c50("Failed to parse type '" + 'double' + "' for input '" + input + "'");
        } else {
          throw $p;
        }
      }
    }
    var result = tmp$ret$1;
    var specialFp = this.v4v_1.q4v_1.i4x_1;
    if (specialFp ? true : isFinite_0(result))
      return result;
    throwInvalidFloatingPointDecoded(this.x4v_1, result);
  };
  protoOf(StreamingJsonDecoder).h4e = function () {
    var string = this.x4v_1.g51();
    if (!(string.length === 1)) {
      this.x4v_1.c50("Expected single char, but got '" + string + "'");
    }
    return charSequenceGet(string, 0);
  };
  protoOf(StreamingJsonDecoder).i4e = function () {
    var tmp;
    if (this.b4w_1.a4x_1) {
      tmp = this.x4v_1.z52();
    } else {
      tmp = this.x4v_1.f51();
    }
    return tmp;
  };
  protoOf(StreamingJsonDecoder).k4e = function (descriptor) {
    return get_isUnsignedNumber(descriptor) ? new JsonDecoderForUnsignedTypes(this.x4v_1, this.v4v_1) : protoOf(AbstractDecoder).k4e.call(this, descriptor);
  };
  protoOf(StreamingJsonDecoder).j4e = function (enumDescriptor) {
    return getJsonNameIndexOrThrow(enumDescriptor, this.v4v_1, this.i4e(), ' at path ' + this.x4v_1.e4w_1.p50());
  };
  function JsonDecoderForUnsignedTypes(lexer, json) {
    AbstractDecoder.call(this);
    this.h53_1 = lexer;
    this.i53_1 = json.y4b();
  }
  protoOf(JsonDecoderForUnsignedTypes).y4b = function () {
    return this.i53_1;
  };
  protoOf(JsonDecoderForUnsignedTypes).d4f = function (descriptor) {
    var message = 'unsupported';
    throw IllegalStateException_init_$Create$(toString(message));
  };
  protoOf(JsonDecoderForUnsignedTypes).d4e = function () {
    var tmp$ret$2;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.parseString' call
      var this_0 = this.h53_1;
      var input = this_0.g51();
      try {
        // Inline function 'kotlinx.serialization.json.internal.JsonDecoderForUnsignedTypes.decodeInt.<anonymous>' call
        // Inline function 'kotlin.UInt.toInt' call
        var this_1 = toUInt(input);
        tmp$ret$2 = _UInt___get_data__impl__f0vqqw(this_1);
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          this_0.c50("Failed to parse type '" + 'UInt' + "' for input '" + input + "'");
        } else {
          throw $p;
        }
      }
    }
    return tmp$ret$2;
  };
  protoOf(JsonDecoderForUnsignedTypes).e4e = function () {
    var tmp$ret$2;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.parseString' call
      var this_0 = this.h53_1;
      var input = this_0.g51();
      try {
        // Inline function 'kotlinx.serialization.json.internal.JsonDecoderForUnsignedTypes.decodeLong.<anonymous>' call
        // Inline function 'kotlin.ULong.toLong' call
        var this_1 = toULong(input);
        tmp$ret$2 = _ULong___get_data__impl__fggpzb(this_1);
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          this_0.c50("Failed to parse type '" + 'ULong' + "' for input '" + input + "'");
        } else {
          throw $p;
        }
      }
    }
    return tmp$ret$2;
  };
  protoOf(JsonDecoderForUnsignedTypes).b4e = function () {
    var tmp$ret$2;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.parseString' call
      var this_0 = this.h53_1;
      var input = this_0.g51();
      try {
        // Inline function 'kotlinx.serialization.json.internal.JsonDecoderForUnsignedTypes.decodeByte.<anonymous>' call
        // Inline function 'kotlin.UByte.toByte' call
        var this_1 = toUByte(input);
        tmp$ret$2 = _UByte___get_data__impl__jof9qr(this_1);
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          this_0.c50("Failed to parse type '" + 'UByte' + "' for input '" + input + "'");
        } else {
          throw $p;
        }
      }
    }
    return tmp$ret$2;
  };
  protoOf(JsonDecoderForUnsignedTypes).c4e = function () {
    var tmp$ret$2;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.parseString' call
      var this_0 = this.h53_1;
      var input = this_0.g51();
      try {
        // Inline function 'kotlinx.serialization.json.internal.JsonDecoderForUnsignedTypes.decodeShort.<anonymous>' call
        // Inline function 'kotlin.UShort.toShort' call
        var this_1 = toUShort(input);
        tmp$ret$2 = _UShort___get_data__impl__g0245(this_1);
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          this_0.c50("Failed to parse type '" + 'UShort' + "' for input '" + input + "'");
        } else {
          throw $p;
        }
      }
    }
    return tmp$ret$2;
  };
  function get_unsignedNumberDescriptors() {
    _init_properties_StreamingJsonEncoder_kt__pn1bsi();
    return unsignedNumberDescriptors;
  }
  var unsignedNumberDescriptors;
  function StreamingJsonEncoder_init_$Init$(output, json, mode, modeReuseCache, $this) {
    StreamingJsonEncoder.call($this, Composer_0(output, json), json, mode, modeReuseCache);
    return $this;
  }
  function StreamingJsonEncoder_init_$Create$(output, json, mode, modeReuseCache) {
    return StreamingJsonEncoder_init_$Init$(output, json, mode, modeReuseCache, objectCreate(protoOf(StreamingJsonEncoder)));
  }
  function encodeTypeInfo($this, descriptor) {
    $this.q50_1.z4y();
    $this.q4f(ensureNotNull($this.x50_1));
    $this.q50_1.b4z(get_COLON());
    $this.q50_1.a4z();
    $this.q4f(descriptor.v4b());
  }
  function StreamingJsonEncoder(composer, json, mode, modeReuseCache) {
    AbstractEncoder.call(this);
    this.q50_1 = composer;
    this.r50_1 = json;
    this.s50_1 = mode;
    this.t50_1 = modeReuseCache;
    this.u50_1 = this.r50_1.y4b();
    this.v50_1 = this.r50_1.q4v_1;
    this.w50_1 = false;
    this.x50_1 = null;
    var i = this.s50_1.za_1;
    if (!(this.t50_1 == null)) {
      if (!(this.t50_1[i] === null) ? true : !(this.t50_1[i] === this)) {
        this.t50_1[i] = this;
      }
    }
  }
  protoOf(StreamingJsonEncoder).r4x = function () {
    return this.r50_1;
  };
  protoOf(StreamingJsonEncoder).y4b = function () {
    return this.u50_1;
  };
  protoOf(StreamingJsonEncoder).j4g = function (descriptor, index) {
    return this.v50_1.y4w_1;
  };
  protoOf(StreamingJsonEncoder).e4g = function (serializer, value) {
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.encodePolymorphically' call
      var tmp;
      if (!(serializer instanceof AbstractPolymorphicSerializer)) {
        tmp = true;
      } else {
        tmp = this.r4x().q4v_1.g4x_1;
      }
      if (tmp) {
        serializer.w4a(this, value);
        break $l$block;
      }
      var casted = serializer instanceof AbstractPolymorphicSerializer ? serializer : THROW_CCE();
      var baseClassDiscriminator = classDiscriminator(serializer.v4a(), this.r4x());
      var actualSerializer = findPolymorphicSerializer_0(casted, this, !(value == null) ? value : THROW_CCE());
      validateIfSealed$accessor$1rk9rdt(casted, actualSerializer, baseClassDiscriminator);
      checkKind(actualSerializer.v4a().n4c());
      // Inline function 'kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue.<anonymous>' call
      this.x50_1 = baseClassDiscriminator;
      actualSerializer.w4a(this, value);
    }
  };
  protoOf(StreamingJsonEncoder).n4e = function (descriptor) {
    var newMode = switchMode(this.r50_1, descriptor);
    if (!(newMode.d53_1 === get_INVALID())) {
      this.q50_1.b4z(newMode.d53_1);
      this.q50_1.x4y();
    }
    if (!(this.x50_1 == null)) {
      encodeTypeInfo(this, descriptor);
      this.x50_1 = null;
    }
    if (this.s50_1.equals(newMode)) {
      return this;
    }
    var tmp0_safe_receiver = this.t50_1;
    var tmp1_elvis_lhs = tmp0_safe_receiver == null ? null : tmp0_safe_receiver[newMode.za_1];
    return tmp1_elvis_lhs == null ? new StreamingJsonEncoder(this.q50_1, this.r50_1, newMode, this.t50_1) : tmp1_elvis_lhs;
  };
  protoOf(StreamingJsonEncoder).o4e = function (descriptor) {
    if (!(this.s50_1.e53_1 === get_INVALID())) {
      this.q50_1.y4y();
      this.q50_1.z4y();
      this.q50_1.b4z(this.s50_1.e53_1);
    }
  };
  protoOf(StreamingJsonEncoder).f4f = function (descriptor, index) {
    switch (this.s50_1.za_1) {
      case 1:
        if (!this.q50_1.w4y_1) {
          this.q50_1.b4z(get_COMMA());
        }

        this.q50_1.z4y();
        break;
      case 2:
        if (!this.q50_1.w4y_1) {
          var tmp = this;
          var tmp_0;
          if ((index % 2 | 0) === 0) {
            this.q50_1.b4z(get_COMMA());
            this.q50_1.z4y();
            tmp_0 = true;
          } else {
            this.q50_1.b4z(get_COLON());
            this.q50_1.a4z();
            tmp_0 = false;
          }
          tmp.w50_1 = tmp_0;
        } else {
          this.w50_1 = true;
          this.q50_1.z4y();
        }

        break;
      case 3:
        if (index === 0)
          this.w50_1 = true;
        if (index === 1) {
          this.q50_1.b4z(get_COMMA());
          this.q50_1.a4z();
          this.w50_1 = false;
        }

        break;
      default:
        if (!this.q50_1.w4y_1) {
          this.q50_1.b4z(get_COMMA());
        }

        this.q50_1.z4y();
        this.q4f(getJsonElementName(descriptor, this.r50_1, index));
        this.q50_1.b4z(get_COLON());
        this.q50_1.a4z();
        break;
    }
    return true;
  };
  protoOf(StreamingJsonEncoder).f4g = function (descriptor, index, serializer, value) {
    if (!(value == null) ? true : this.v50_1.d4x_1) {
      protoOf(AbstractEncoder).f4g.call(this, descriptor, index, serializer, value);
    }
  };
  protoOf(StreamingJsonEncoder).s4f = function (descriptor) {
    var tmp;
    if (get_isUnsignedNumber(descriptor)) {
      // Inline function 'kotlinx.serialization.json.internal.StreamingJsonEncoder.composerAs' call
      var tmp_0;
      var tmp_1 = this.q50_1;
      if (tmp_1 instanceof ComposerForUnsignedNumbers) {
        tmp_0 = this.q50_1;
      } else {
        tmp_0 = new ComposerForUnsignedNumbers(this.q50_1.v4y_1, this.w50_1);
      }
      var tmp$ret$1 = tmp_0;
      tmp = new StreamingJsonEncoder(tmp$ret$1, this.r50_1, this.s50_1, null);
    } else if (get_isUnquotedLiteral(descriptor)) {
      // Inline function 'kotlinx.serialization.json.internal.StreamingJsonEncoder.composerAs' call
      var tmp_2;
      var tmp_3 = this.q50_1;
      if (tmp_3 instanceof ComposerForUnquotedLiterals) {
        tmp_2 = this.q50_1;
      } else {
        tmp_2 = new ComposerForUnquotedLiterals(this.q50_1.v4y_1, this.w50_1);
      }
      var tmp$ret$3 = tmp_2;
      tmp = new StreamingJsonEncoder(tmp$ret$3, this.r50_1, this.s50_1, null);
    } else {
      tmp = protoOf(AbstractEncoder).s4f.call(this, descriptor);
    }
    return tmp;
  };
  protoOf(StreamingJsonEncoder).h4f = function () {
    this.q50_1.d4z(get_NULL());
  };
  protoOf(StreamingJsonEncoder).i4f = function (value) {
    if (this.w50_1) {
      this.q4f(value.toString());
    } else {
      this.q50_1.m4z(value);
    }
  };
  protoOf(StreamingJsonEncoder).j4f = function (value) {
    if (this.w50_1) {
      this.q4f(value.toString());
    } else {
      this.q50_1.h4z(value);
    }
  };
  protoOf(StreamingJsonEncoder).k4f = function (value) {
    if (this.w50_1) {
      this.q4f(value.toString());
    } else {
      this.q50_1.j4z(value);
    }
  };
  protoOf(StreamingJsonEncoder).l4f = function (value) {
    if (this.w50_1) {
      this.q4f(value.toString());
    } else {
      this.q50_1.k4z(value);
    }
  };
  protoOf(StreamingJsonEncoder).m4f = function (value) {
    if (this.w50_1) {
      this.q4f(value.toString());
    } else {
      this.q50_1.l4z(value);
    }
  };
  protoOf(StreamingJsonEncoder).n4f = function (value) {
    if (this.w50_1) {
      this.q4f(value.toString());
    } else {
      this.q50_1.f4z(value);
    }
    if (!this.v50_1.i4x_1 ? !isFinite(value) : false) {
      throw InvalidFloatingPointEncoded(value, toString(this.q50_1.v4y_1));
    }
  };
  protoOf(StreamingJsonEncoder).o4f = function (value) {
    if (this.w50_1) {
      this.q4f(value.toString());
    } else {
      this.q50_1.g4z(value);
    }
    if (!this.v50_1.i4x_1 ? !isFinite_0(value) : false) {
      throw InvalidFloatingPointEncoded(value, toString(this.q50_1.v4y_1));
    }
  };
  protoOf(StreamingJsonEncoder).p4f = function (value) {
    this.q4f(toString_0(value));
  };
  protoOf(StreamingJsonEncoder).q4f = function (value) {
    return this.q50_1.n4z(value);
  };
  protoOf(StreamingJsonEncoder).r4f = function (enumDescriptor, index) {
    this.q4f(enumDescriptor.r4c(index));
  };
  function get_isUnsignedNumber(_this__u8e3s4) {
    _init_properties_StreamingJsonEncoder_kt__pn1bsi();
    return _this__u8e3s4.m4c() ? get_unsignedNumberDescriptors().a1(_this__u8e3s4) : false;
  }
  function get_isUnquotedLiteral(_this__u8e3s4) {
    _init_properties_StreamingJsonEncoder_kt__pn1bsi();
    return _this__u8e3s4.m4c() ? equals(_this__u8e3s4, get_jsonUnquotedLiteralDescriptor()) : false;
  }
  var properties_initialized_StreamingJsonEncoder_kt_6ifwwk;
  function _init_properties_StreamingJsonEncoder_kt__pn1bsi() {
    if (!properties_initialized_StreamingJsonEncoder_kt_6ifwwk) {
      properties_initialized_StreamingJsonEncoder_kt_6ifwwk = true;
      unsignedNumberDescriptors = setOf([serializer_1(Companion_getInstance_0()).v4a(), serializer_0(Companion_getInstance()).v4a(), serializer_2(Companion_getInstance_1()).v4a(), serializer_3(Companion_getInstance_2()).v4a()]);
    }
  }
  function get_ESCAPE_STRINGS() {
    _init_properties_StringOps_kt__fcy1db();
    return ESCAPE_STRINGS;
  }
  var ESCAPE_STRINGS;
  var ESCAPE_MARKERS;
  function toHexChar(i) {
    _init_properties_StringOps_kt__fcy1db();
    var d = i & 15;
    var tmp;
    if (d < 10) {
      // Inline function 'kotlin.code' call
      var this_0 = _Char___init__impl__6a9atx(48);
      var tmp$ret$0 = Char__toInt_impl_vasixd(this_0);
      tmp = numberToChar(d + tmp$ret$0 | 0);
    } else {
      var tmp_0 = d - 10 | 0;
      // Inline function 'kotlin.code' call
      var this_1 = _Char___init__impl__6a9atx(97);
      var tmp$ret$1 = Char__toInt_impl_vasixd(this_1);
      tmp = numberToChar(tmp_0 + tmp$ret$1 | 0);
    }
    return tmp;
  }
  function printQuoted(_this__u8e3s4, value) {
    _init_properties_StringOps_kt__fcy1db();
    _this__u8e3s4.z5(get_STRING());
    var lastPos = 0;
    var inductionVariable = 0;
    var last = charSequenceLength(value) - 1 | 0;
    if (inductionVariable <= last)
      do {
        var i = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        // Inline function 'kotlin.code' call
        var this_0 = charSequenceGet(value, i);
        var c = Char__toInt_impl_vasixd(this_0);
        if (c < get_ESCAPE_STRINGS().length ? !(get_ESCAPE_STRINGS()[c] == null) : false) {
          _this__u8e3s4.s8(value, lastPos, i);
          _this__u8e3s4.y5(get_ESCAPE_STRINGS()[c]);
          lastPos = i + 1 | 0;
        }
      }
       while (inductionVariable <= last);
    if (!(lastPos === 0)) {
      _this__u8e3s4.s8(value, lastPos, value.length);
    } else {
      _this__u8e3s4.y5(value);
    }
    _this__u8e3s4.z5(get_STRING());
  }
  function toBooleanStrictOrNull_0(_this__u8e3s4) {
    _init_properties_StringOps_kt__fcy1db();
    return equals_0(_this__u8e3s4, 'true', true) ? true : equals_0(_this__u8e3s4, 'false', true) ? false : null;
  }
  var properties_initialized_StringOps_kt_wzaea7;
  function _init_properties_StringOps_kt__fcy1db() {
    if (!properties_initialized_StringOps_kt_wzaea7) {
      properties_initialized_StringOps_kt_wzaea7 = true;
      // Inline function 'kotlin.apply' call
      // Inline function 'kotlin.arrayOfNulls' call
      var this_0 = fillArrayVal(Array(93), null);
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'kotlinx.serialization.json.internal.ESCAPE_STRINGS.<anonymous>' call
      var inductionVariable = 0;
      if (inductionVariable <= 31)
        do {
          var c = inductionVariable;
          inductionVariable = inductionVariable + 1 | 0;
          var c1 = toHexChar(c >> 12);
          var c2 = toHexChar(c >> 8);
          var c3 = toHexChar(c >> 4);
          var c4 = toHexChar(c);
          this_0[c] = '\\u' + toString_0(c1) + toString_0(c2) + toString_0(c3) + toString_0(c4);
        }
         while (inductionVariable <= 31);
      // Inline function 'kotlin.code' call
      var this_1 = _Char___init__impl__6a9atx(34);
      this_0[Char__toInt_impl_vasixd(this_1)] = '\\"';
      // Inline function 'kotlin.code' call
      var this_2 = _Char___init__impl__6a9atx(92);
      this_0[Char__toInt_impl_vasixd(this_2)] = '\\\\';
      // Inline function 'kotlin.code' call
      var this_3 = _Char___init__impl__6a9atx(9);
      this_0[Char__toInt_impl_vasixd(this_3)] = '\\t';
      // Inline function 'kotlin.code' call
      var this_4 = _Char___init__impl__6a9atx(8);
      this_0[Char__toInt_impl_vasixd(this_4)] = '\\b';
      // Inline function 'kotlin.code' call
      var this_5 = _Char___init__impl__6a9atx(10);
      this_0[Char__toInt_impl_vasixd(this_5)] = '\\n';
      // Inline function 'kotlin.code' call
      var this_6 = _Char___init__impl__6a9atx(13);
      this_0[Char__toInt_impl_vasixd(this_6)] = '\\r';
      this_0[12] = '\\f';
      ESCAPE_STRINGS = this_0;
      // Inline function 'kotlin.apply' call
      var this_7 = new Int8Array(93);
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'kotlinx.serialization.json.internal.ESCAPE_MARKERS.<anonymous>' call
      var inductionVariable_0 = 0;
      if (inductionVariable_0 <= 31)
        do {
          var c_0 = inductionVariable_0;
          inductionVariable_0 = inductionVariable_0 + 1 | 0;
          this_7[c_0] = 1;
        }
         while (inductionVariable_0 <= 31);
      // Inline function 'kotlin.code' call
      var this_8 = _Char___init__impl__6a9atx(34);
      this_7[Char__toInt_impl_vasixd(this_8)] = 34;
      // Inline function 'kotlin.code' call
      var this_9 = _Char___init__impl__6a9atx(92);
      this_7[Char__toInt_impl_vasixd(this_9)] = 92;
      // Inline function 'kotlin.code' call
      var this_10 = _Char___init__impl__6a9atx(9);
      this_7[Char__toInt_impl_vasixd(this_10)] = 116;
      // Inline function 'kotlin.code' call
      var this_11 = _Char___init__impl__6a9atx(8);
      this_7[Char__toInt_impl_vasixd(this_11)] = 98;
      // Inline function 'kotlin.code' call
      var this_12 = _Char___init__impl__6a9atx(10);
      this_7[Char__toInt_impl_vasixd(this_12)] = 110;
      // Inline function 'kotlin.code' call
      var this_13 = _Char___init__impl__6a9atx(13);
      this_7[Char__toInt_impl_vasixd(this_13)] = 114;
      this_7[12] = 102;
      ESCAPE_MARKERS = this_7;
    }
  }
  function readJson(json, element, deserializer) {
    var tmp;
    if (element instanceof JsonObject) {
      tmp = new JsonTreeDecoder(json, element);
    } else {
      if (element instanceof JsonArray) {
        tmp = new JsonTreeListDecoder(json, element);
      } else {
        var tmp_0;
        if (element instanceof JsonLiteral) {
          tmp_0 = true;
        } else {
          tmp_0 = equals(element, JsonNull_getInstance());
        }
        if (tmp_0) {
          tmp = new JsonPrimitiveDecoder(json, element instanceof JsonPrimitive ? element : THROW_CCE());
        } else {
          noWhenBranchMatchedException();
        }
      }
    }
    var input = tmp;
    return input.m4e(deserializer);
  }
  function unparsedPrimitive($this, primitive) {
    throw JsonDecodingException_0(-1, "Failed to parse literal as '" + primitive + "' value", toString($this.o53()));
  }
  function asLiteral(_this__u8e3s4, $this, type) {
    var tmp0_elvis_lhs = _this__u8e3s4 instanceof JsonLiteral ? _this__u8e3s4 : null;
    var tmp;
    if (tmp0_elvis_lhs == null) {
      throw JsonDecodingException_1(-1, "Unexpected 'null' literal when non-nullable " + type + ' was expected');
    } else {
      tmp = tmp0_elvis_lhs;
    }
    return tmp;
  }
  function AbstractJsonTreeDecoder(json, value) {
    NamedValueDecoder.call(this);
    this.l53_1 = json;
    this.m53_1 = value;
    this.n53_1 = this.r4x().q4v_1;
  }
  protoOf(AbstractJsonTreeDecoder).r4x = function () {
    return this.l53_1;
  };
  protoOf(AbstractJsonTreeDecoder).t2 = function () {
    return this.m53_1;
  };
  protoOf(AbstractJsonTreeDecoder).y4b = function () {
    return this.r4x().y4b();
  };
  protoOf(AbstractJsonTreeDecoder).o53 = function () {
    var tmp0_safe_receiver = this.s4s();
    var tmp;
    if (tmp0_safe_receiver == null) {
      tmp = null;
    } else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.currentObject.<anonymous>' call
      tmp = this.p53(tmp0_safe_receiver);
    }
    var tmp1_elvis_lhs = tmp;
    return tmp1_elvis_lhs == null ? this.t2() : tmp1_elvis_lhs;
  };
  protoOf(AbstractJsonTreeDecoder).p4x = function () {
    return this.o53();
  };
  protoOf(AbstractJsonTreeDecoder).m4e = function (deserializer) {
    return decodeSerializableValuePolymorphic(this, deserializer);
  };
  protoOf(AbstractJsonTreeDecoder).t4s = function (parentName, childName) {
    return childName;
  };
  protoOf(AbstractJsonTreeDecoder).n4e = function (descriptor) {
    var currentObject = this.o53();
    var tmp0_subject = descriptor.n4c();
    var tmp;
    var tmp_0;
    if (equals(tmp0_subject, LIST_getInstance())) {
      tmp_0 = true;
    } else {
      tmp_0 = tmp0_subject instanceof PolymorphicKind;
    }
    if (tmp_0) {
      var tmp_1 = this.r4x();
      // Inline function 'kotlinx.serialization.json.internal.cast' call
      if (!(currentObject instanceof JsonArray)) {
        throw JsonDecodingException_1(-1, 'Expected ' + getKClass(JsonArray) + ' as the serialized body of ' + descriptor.v4b() + ', but had ' + getKClassFromExpression(currentObject));
      }
      tmp = new JsonTreeListDecoder(tmp_1, currentObject);
    } else {
      if (equals(tmp0_subject, MAP_getInstance())) {
        // Inline function 'kotlinx.serialization.json.internal.selectMapMode' call
        var this_0 = this.r4x();
        var keyDescriptor = carrierDescriptor(descriptor.p4c(0), this_0.y4b());
        var keyKind = keyDescriptor.n4c();
        var tmp_2;
        var tmp_3;
        if (keyKind instanceof PrimitiveKind) {
          tmp_3 = true;
        } else {
          tmp_3 = equals(keyKind, ENUM_getInstance());
        }
        if (tmp_3) {
          // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.beginStructure.<anonymous>' call
          var tmp_4 = this.r4x();
          // Inline function 'kotlinx.serialization.json.internal.cast' call
          if (!(currentObject instanceof JsonObject)) {
            throw JsonDecodingException_1(-1, 'Expected ' + getKClass(JsonObject) + ' as the serialized body of ' + descriptor.v4b() + ', but had ' + getKClassFromExpression(currentObject));
          }
          tmp_2 = new JsonTreeMapDecoder(tmp_4, currentObject);
        } else {
          if (this_0.q4v_1.b4x_1) {
            // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.beginStructure.<anonymous>' call
            var tmp_5 = this.r4x();
            // Inline function 'kotlinx.serialization.json.internal.cast' call
            if (!(currentObject instanceof JsonArray)) {
              throw JsonDecodingException_1(-1, 'Expected ' + getKClass(JsonArray) + ' as the serialized body of ' + descriptor.v4b() + ', but had ' + getKClassFromExpression(currentObject));
            }
            tmp_2 = new JsonTreeListDecoder(tmp_5, currentObject);
          } else {
            throw InvalidKeyKindException(keyDescriptor);
          }
        }
        tmp = tmp_2;
      } else {
        var tmp_6 = this.r4x();
        // Inline function 'kotlinx.serialization.json.internal.cast' call
        if (!(currentObject instanceof JsonObject)) {
          throw JsonDecodingException_1(-1, 'Expected ' + getKClass(JsonObject) + ' as the serialized body of ' + descriptor.v4b() + ', but had ' + getKClassFromExpression(currentObject));
        }
        tmp = new JsonTreeDecoder(tmp_6, currentObject);
      }
    }
    return tmp;
  };
  protoOf(AbstractJsonTreeDecoder).o4e = function (descriptor) {
  };
  protoOf(AbstractJsonTreeDecoder).y4d = function () {
    var tmp = this.o53();
    return !(tmp instanceof JsonNull);
  };
  protoOf(AbstractJsonTreeDecoder).q53 = function (tag) {
    var currentElement = this.p53(tag);
    var tmp0_elvis_lhs = currentElement instanceof JsonPrimitive ? currentElement : null;
    var tmp;
    if (tmp0_elvis_lhs == null) {
      throw JsonDecodingException_0(-1, 'Expected JsonPrimitive at ' + tag + ', found ' + currentElement, toString(this.o53()));
    } else {
      tmp = tmp0_elvis_lhs;
    }
    return tmp;
  };
  protoOf(AbstractJsonTreeDecoder).r53 = function (tag, enumDescriptor) {
    return getJsonNameIndexOrThrow(enumDescriptor, this.r4x(), this.q53(tag).x3e());
  };
  protoOf(AbstractJsonTreeDecoder).f4t = function (tag, enumDescriptor) {
    return this.r53((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE(), enumDescriptor);
  };
  protoOf(AbstractJsonTreeDecoder).s53 = function (tag) {
    return !(this.p53(tag) === JsonNull_getInstance());
  };
  protoOf(AbstractJsonTreeDecoder).v4s = function (tag) {
    return this.s53((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE());
  };
  protoOf(AbstractJsonTreeDecoder).t53 = function (tag) {
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.primitive' call
      var this_0 = this.q53(tag);
      try {
        var tmp0_elvis_lhs = get_booleanOrNull(this_0);
        var tmp;
        if (tmp0_elvis_lhs == null) {
          unparsedPrimitive(this, 'boolean');
        } else {
          tmp = tmp0_elvis_lhs;
        }
        tmp$ret$1 = tmp;
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          unparsedPrimitive(this, 'boolean');
        } else {
          throw $p;
        }
      }
    }
    return tmp$ret$1;
  };
  protoOf(AbstractJsonTreeDecoder).w4s = function (tag) {
    return this.t53((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE());
  };
  protoOf(AbstractJsonTreeDecoder).u53 = function (tag) {
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.primitive' call
      var this_0 = this.q53(tag);
      try {
        // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeTaggedByte.<anonymous>' call
        var result = get_int(this_0);
        var tmp;
        var containsLower = ByteCompanionObject_instance.MIN_VALUE;
        if (result <= ByteCompanionObject_instance.MAX_VALUE ? containsLower <= result : false) {
          tmp = toByte(result);
        } else {
          tmp = null;
        }
        var tmp0_elvis_lhs = tmp;
        var tmp_0;
        if (tmp0_elvis_lhs == null) {
          unparsedPrimitive(this, 'byte');
        } else {
          tmp_0 = tmp0_elvis_lhs;
        }
        tmp$ret$1 = tmp_0;
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          unparsedPrimitive(this, 'byte');
        } else {
          throw $p;
        }
      }
    }
    return tmp$ret$1;
  };
  protoOf(AbstractJsonTreeDecoder).x4s = function (tag) {
    return this.u53((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE());
  };
  protoOf(AbstractJsonTreeDecoder).v53 = function (tag) {
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.primitive' call
      var this_0 = this.q53(tag);
      try {
        // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeTaggedShort.<anonymous>' call
        var result = get_int(this_0);
        var tmp;
        var containsLower = ShortCompanionObject_instance.MIN_VALUE;
        if (result <= ShortCompanionObject_instance.MAX_VALUE ? containsLower <= result : false) {
          tmp = toShort(result);
        } else {
          tmp = null;
        }
        var tmp0_elvis_lhs = tmp;
        var tmp_0;
        if (tmp0_elvis_lhs == null) {
          unparsedPrimitive(this, 'short');
        } else {
          tmp_0 = tmp0_elvis_lhs;
        }
        tmp$ret$1 = tmp_0;
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          unparsedPrimitive(this, 'short');
        } else {
          throw $p;
        }
      }
    }
    return tmp$ret$1;
  };
  protoOf(AbstractJsonTreeDecoder).y4s = function (tag) {
    return this.v53((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE());
  };
  protoOf(AbstractJsonTreeDecoder).w53 = function (tag) {
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.primitive' call
      var this_0 = this.q53(tag);
      try {
        // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeTaggedInt.<anonymous>' call
        var tmp0_elvis_lhs = get_int(this_0);
        var tmp;
        if (tmp0_elvis_lhs == null) {
          unparsedPrimitive(this, 'int');
        } else {
          tmp = tmp0_elvis_lhs;
        }
        tmp$ret$1 = tmp;
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          unparsedPrimitive(this, 'int');
        } else {
          throw $p;
        }
      }
    }
    return tmp$ret$1;
  };
  protoOf(AbstractJsonTreeDecoder).z4s = function (tag) {
    return this.w53((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE());
  };
  protoOf(AbstractJsonTreeDecoder).x53 = function (tag) {
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.primitive' call
      var this_0 = this.q53(tag);
      try {
        // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeTaggedLong.<anonymous>' call
        var tmp0_elvis_lhs = get_long(this_0);
        var tmp;
        if (tmp0_elvis_lhs == null) {
          unparsedPrimitive(this, 'long');
        } else {
          tmp = tmp0_elvis_lhs;
        }
        tmp$ret$1 = tmp;
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          unparsedPrimitive(this, 'long');
        } else {
          throw $p;
        }
      }
    }
    return tmp$ret$1;
  };
  protoOf(AbstractJsonTreeDecoder).a4t = function (tag) {
    return this.x53((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE());
  };
  protoOf(AbstractJsonTreeDecoder).y53 = function (tag) {
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.primitive' call
      var this_0 = this.q53(tag);
      try {
        // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeTaggedFloat.<anonymous>' call
        var tmp0_elvis_lhs = get_float(this_0);
        var tmp;
        if (tmp0_elvis_lhs == null) {
          unparsedPrimitive(this, 'float');
        } else {
          tmp = tmp0_elvis_lhs;
        }
        tmp$ret$1 = tmp;
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          unparsedPrimitive(this, 'float');
        } else {
          throw $p;
        }
      }
    }
    var result = tmp$ret$1;
    var specialFp = this.r4x().q4v_1.i4x_1;
    if (specialFp ? true : isFinite(result))
      return result;
    throw InvalidFloatingPointDecoded(result, tag, toString(this.o53()));
  };
  protoOf(AbstractJsonTreeDecoder).b4t = function (tag) {
    return this.y53((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE());
  };
  protoOf(AbstractJsonTreeDecoder).z53 = function (tag) {
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.primitive' call
      var this_0 = this.q53(tag);
      try {
        // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeTaggedDouble.<anonymous>' call
        var tmp0_elvis_lhs = get_double(this_0);
        var tmp;
        if (tmp0_elvis_lhs == null) {
          unparsedPrimitive(this, 'double');
        } else {
          tmp = tmp0_elvis_lhs;
        }
        tmp$ret$1 = tmp;
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          unparsedPrimitive(this, 'double');
        } else {
          throw $p;
        }
      }
    }
    var result = tmp$ret$1;
    var specialFp = this.r4x().q4v_1.i4x_1;
    if (specialFp ? true : isFinite_0(result))
      return result;
    throw InvalidFloatingPointDecoded(result, tag, toString(this.o53()));
  };
  protoOf(AbstractJsonTreeDecoder).c4t = function (tag) {
    return this.z53((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE());
  };
  protoOf(AbstractJsonTreeDecoder).a54 = function (tag) {
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.primitive' call
      var this_0 = this.q53(tag);
      try {
        // Inline function 'kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeTaggedChar.<anonymous>' call
        var tmp0_elvis_lhs = single(this_0.x3e());
        var tmp;
        var tmp_0 = tmp0_elvis_lhs;
        if ((tmp_0 == null ? null : new Char(tmp_0)) == null) {
          unparsedPrimitive(this, 'char');
        } else {
          tmp = tmp0_elvis_lhs;
        }
        tmp$ret$1 = tmp;
        break $l$block;
      } catch ($p) {
        if ($p instanceof IllegalArgumentException) {
          var e = $p;
          unparsedPrimitive(this, 'char');
        } else {
          throw $p;
        }
      }
    }
    return tmp$ret$1;
  };
  protoOf(AbstractJsonTreeDecoder).d4t = function (tag) {
    return this.a54((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE());
  };
  protoOf(AbstractJsonTreeDecoder).b54 = function (tag) {
    var value = this.q53(tag);
    if (!this.r4x().q4v_1.a4x_1) {
      var literal = asLiteral(value, this, 'string');
      if (!literal.b4y_1)
        throw JsonDecodingException_0(-1, "String literal for key '" + tag + "' should be quoted.\n" + get_lenientHint(), toString(this.o53()));
    }
    if (value instanceof JsonNull)
      throw JsonDecodingException_0(-1, "Unexpected 'null' value instead of string literal", toString(this.o53()));
    return value.x3e();
  };
  protoOf(AbstractJsonTreeDecoder).e4t = function (tag) {
    return this.b54((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE());
  };
  protoOf(AbstractJsonTreeDecoder).c54 = function (tag, inlineDescriptor) {
    return get_isUnsignedNumber(inlineDescriptor) ? new JsonDecoderForUnsignedTypes(new StringJsonLexer(this.q53(tag).x3e()), this.r4x()) : protoOf(NamedValueDecoder).g4t.call(this, tag, inlineDescriptor);
  };
  protoOf(AbstractJsonTreeDecoder).g4t = function (tag, inlineDescriptor) {
    return this.c54((!(tag == null) ? typeof tag === 'string' : false) ? tag : THROW_CCE(), inlineDescriptor);
  };
  protoOf(AbstractJsonTreeDecoder).k4e = function (descriptor) {
    return !(this.s4s() == null) ? protoOf(NamedValueDecoder).k4e.call(this, descriptor) : (new JsonPrimitiveDecoder(this.r4x(), this.t2())).k4e(descriptor);
  };
  function coerceInputValue_0($this, descriptor, index, tag) {
    var tmp$ret$1;
    $l$block_2: {
      // Inline function 'kotlinx.serialization.json.internal.tryCoerceValue' call
      var this_0 = $this.r4x();
      var elementDescriptor = descriptor.p4c(index);
      var tmp;
      if (!elementDescriptor.g4c()) {
        // Inline function 'kotlinx.serialization.json.internal.JsonTreeDecoder.coerceInputValue.<anonymous>' call
        var tmp_0 = $this.p53(tag);
        tmp = tmp_0 instanceof JsonNull;
      } else {
        tmp = false;
      }
      if (tmp) {
        tmp$ret$1 = true;
        break $l$block_2;
      }
      if (equals(elementDescriptor.n4c(), ENUM_getInstance())) {
        var tmp_1;
        if (elementDescriptor.g4c()) {
          // Inline function 'kotlinx.serialization.json.internal.JsonTreeDecoder.coerceInputValue.<anonymous>' call
          var tmp_2 = $this.p53(tag);
          tmp_1 = tmp_2 instanceof JsonNull;
        } else {
          tmp_1 = false;
        }
        if (tmp_1) {
          tmp$ret$1 = false;
          break $l$block_2;
        }
        // Inline function 'kotlinx.serialization.json.internal.JsonTreeDecoder.coerceInputValue.<anonymous>' call
        var tmp_3 = $this.p53(tag);
        var tmp0_safe_receiver = tmp_3 instanceof JsonPrimitive ? tmp_3 : null;
        var tmp0_elvis_lhs = tmp0_safe_receiver == null ? null : get_contentOrNull(tmp0_safe_receiver);
        var tmp_4;
        if (tmp0_elvis_lhs == null) {
          tmp$ret$1 = false;
          break $l$block_2;
        } else {
          tmp_4 = tmp0_elvis_lhs;
        }
        var enumValue = tmp_4;
        var enumIndex = getJsonNameIndex(elementDescriptor, this_0, enumValue);
        if (enumIndex === -3) {
          // Inline function 'kotlinx.serialization.json.internal.tryCoerceValue.<anonymous>' call
          tmp$ret$1 = true;
          break $l$block_2;
        }
      }
      tmp$ret$1 = false;
    }
    return tmp$ret$1;
  }
  function absenceIsNull($this, descriptor, index) {
    $this.m54_1 = (!$this.r4x().q4v_1.d4x_1 ? !descriptor.s4c(index) : false) ? descriptor.p4c(index).g4c() : false;
    return $this.m54_1;
  }
  function JsonTreeDecoder(json, value, polyDiscriminator, polyDescriptor) {
    polyDiscriminator = polyDiscriminator === VOID ? null : polyDiscriminator;
    polyDescriptor = polyDescriptor === VOID ? null : polyDescriptor;
    AbstractJsonTreeDecoder.call(this, json, value);
    this.i54_1 = value;
    this.j54_1 = polyDiscriminator;
    this.k54_1 = polyDescriptor;
    this.l54_1 = 0;
    this.m54_1 = false;
  }
  protoOf(JsonTreeDecoder).t2 = function () {
    return this.i54_1;
  };
  protoOf(JsonTreeDecoder).d4f = function (descriptor) {
    while (this.l54_1 < descriptor.l4c()) {
      var tmp1 = this.l54_1;
      this.l54_1 = tmp1 + 1 | 0;
      var name = this.n4s(descriptor, tmp1);
      var index = this.l54_1 - 1 | 0;
      this.m54_1 = false;
      var tmp;
      var tmp_0;
      // Inline function 'kotlin.collections.contains' call
      // Inline function 'kotlin.collections.containsKey' call
      var this_0 = this.t2();
      if ((isInterface(this_0, Map) ? this_0 : THROW_CCE()).r(name)) {
        tmp_0 = true;
      } else {
        tmp_0 = absenceIsNull(this, descriptor, index);
      }
      if (tmp_0) {
        tmp = !this.n53_1.f4x_1 ? true : !coerceInputValue_0(this, descriptor, index, name);
      } else {
        tmp = false;
      }
      if (tmp) {
        return index;
      }
    }
    return -1;
  };
  protoOf(JsonTreeDecoder).y4d = function () {
    return !this.m54_1 ? protoOf(AbstractJsonTreeDecoder).y4d.call(this) : false;
  };
  protoOf(JsonTreeDecoder).o4s = function (descriptor, index) {
    var strategy = namingStrategy(descriptor, this.r4x());
    var baseName = descriptor.r4c(index);
    if (strategy == null) {
      if (!this.n53_1.j4x_1)
        return baseName;
      if (this.t2().o2().a1(baseName))
        return baseName;
    }
    var deserializationNamesMap_0 = deserializationNamesMap(this.r4x(), descriptor);
    // Inline function 'kotlin.collections.find' call
    var this_0 = this.t2().o2();
    var tmp$ret$1;
    $l$block: {
      // Inline function 'kotlin.collections.firstOrNull' call
      var tmp0_iterator = this_0.w();
      while (tmp0_iterator.f()) {
        var element = tmp0_iterator.e();
        // Inline function 'kotlinx.serialization.json.internal.JsonTreeDecoder.elementName.<anonymous>' call
        if (deserializationNamesMap_0.q(element) === index) {
          tmp$ret$1 = element;
          break $l$block;
        }
      }
      tmp$ret$1 = null;
    }
    var tmp0_safe_receiver = tmp$ret$1;
    if (tmp0_safe_receiver == null)
      null;
    else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      return tmp0_safe_receiver;
    }
    var fallbackName = strategy == null ? null : strategy.g50(descriptor, index, baseName);
    return fallbackName == null ? baseName : fallbackName;
  };
  protoOf(JsonTreeDecoder).p53 = function (tag) {
    return getValue(this.t2(), tag);
  };
  protoOf(JsonTreeDecoder).n4e = function (descriptor) {
    if (descriptor === this.k54_1) {
      var tmp = this.r4x();
      // Inline function 'kotlinx.serialization.json.internal.cast' call
      var value = this.o53();
      var descriptor_0 = this.k54_1;
      if (!(value instanceof JsonObject)) {
        throw JsonDecodingException_1(-1, 'Expected ' + getKClass(JsonObject) + ' as the serialized body of ' + descriptor_0.v4b() + ', but had ' + getKClassFromExpression(value));
      }
      return new JsonTreeDecoder(tmp, value, this.j54_1, this.k54_1);
    }
    return protoOf(AbstractJsonTreeDecoder).n4e.call(this, descriptor);
  };
  protoOf(JsonTreeDecoder).o4e = function (descriptor) {
    var tmp;
    if (this.n53_1.z4w_1) {
      tmp = true;
    } else {
      var tmp_0 = descriptor.n4c();
      tmp = tmp_0 instanceof PolymorphicKind;
    }
    if (tmp)
      return Unit_instance;
    var strategy = namingStrategy(descriptor, this.r4x());
    var tmp_1;
    if (strategy == null ? !this.n53_1.j4x_1 : false) {
      tmp_1 = jsonCachedSerialNames(descriptor);
    } else if (!(strategy == null)) {
      tmp_1 = deserializationNamesMap(this.r4x(), descriptor).o2();
    } else {
      var tmp_2 = jsonCachedSerialNames(descriptor);
      // Inline function 'kotlin.collections.orEmpty' call
      var tmp0_safe_receiver = get_schemaCache(this.r4x()).q52(descriptor, get_JsonDeserializationNamesKey());
      var tmp0_elvis_lhs = tmp0_safe_receiver == null ? null : tmp0_safe_receiver.o2();
      var tmp$ret$0 = tmp0_elvis_lhs == null ? emptySet() : tmp0_elvis_lhs;
      tmp_1 = plus_0(tmp_2, tmp$ret$0);
    }
    var names = tmp_1;
    var tmp1_iterator = this.t2().o2().w();
    while (tmp1_iterator.f()) {
      var key = tmp1_iterator.e();
      if (!names.a1(key) ? !(key === this.j54_1) : false) {
        throw UnknownKeyException(key, this.t2().toString());
      }
    }
  };
  function JsonTreeListDecoder(json, value) {
    AbstractJsonTreeDecoder.call(this, json, value);
    this.s54_1 = value;
    this.t54_1 = this.s54_1.u();
    this.u54_1 = -1;
  }
  protoOf(JsonTreeListDecoder).t2 = function () {
    return this.s54_1;
  };
  protoOf(JsonTreeListDecoder).o4s = function (descriptor, index) {
    return index.toString();
  };
  protoOf(JsonTreeListDecoder).p53 = function (tag) {
    return this.s54_1.v(toInt(tag));
  };
  protoOf(JsonTreeListDecoder).d4f = function (descriptor) {
    while (this.u54_1 < (this.t54_1 - 1 | 0)) {
      this.u54_1 = this.u54_1 + 1 | 0;
      return this.u54_1;
    }
    return -1;
  };
  function JsonPrimitiveDecoder(json, value) {
    AbstractJsonTreeDecoder.call(this, json, value);
    this.a55_1 = value;
    this.h4t(get_PRIMITIVE_TAG());
  }
  protoOf(JsonPrimitiveDecoder).t2 = function () {
    return this.a55_1;
  };
  protoOf(JsonPrimitiveDecoder).d4f = function (descriptor) {
    return 0;
  };
  protoOf(JsonPrimitiveDecoder).p53 = function (tag) {
    // Inline function 'kotlin.require' call
    // Inline function 'kotlin.contracts.contract' call
    if (!(tag === get_PRIMITIVE_TAG())) {
      // Inline function 'kotlinx.serialization.json.internal.JsonPrimitiveDecoder.currentElement.<anonymous>' call
      var message = "This input can only handle primitives with '" + get_PRIMITIVE_TAG() + "' tag";
      throw IllegalArgumentException_init_$Create$(toString(message));
    }
    return this.a55_1;
  };
  function JsonTreeMapDecoder(json, value) {
    JsonTreeDecoder.call(this, json, value);
    this.l55_1 = value;
    this.m55_1 = toList(this.l55_1.o2());
    this.n55_1 = imul(this.m55_1.u(), 2);
    this.o55_1 = -1;
  }
  protoOf(JsonTreeMapDecoder).t2 = function () {
    return this.l55_1;
  };
  protoOf(JsonTreeMapDecoder).o4s = function (descriptor, index) {
    var i = index / 2 | 0;
    return this.m55_1.v(i);
  };
  protoOf(JsonTreeMapDecoder).d4f = function (descriptor) {
    while (this.o55_1 < (this.n55_1 - 1 | 0)) {
      this.o55_1 = this.o55_1 + 1 | 0;
      return this.o55_1;
    }
    return -1;
  };
  protoOf(JsonTreeMapDecoder).p53 = function (tag) {
    return (this.o55_1 % 2 | 0) === 0 ? JsonPrimitive_2(tag) : getValue(this.l55_1, tag);
  };
  protoOf(JsonTreeMapDecoder).o4e = function (descriptor) {
  };
  function readPolymorphicJson(_this__u8e3s4, discriminator, element, deserializer) {
    return (new JsonTreeDecoder(_this__u8e3s4, element, discriminator, deserializer.v4a())).m4e(deserializer);
  }
  function get_PRIMITIVE_TAG() {
    return PRIMITIVE_TAG;
  }
  var PRIMITIVE_TAG;
  var WriteMode_OBJ_instance;
  var WriteMode_LIST_instance;
  var WriteMode_MAP_instance;
  var WriteMode_POLY_OBJ_instance;
  function values() {
    return [WriteMode_OBJ_getInstance(), WriteMode_LIST_getInstance(), WriteMode_MAP_getInstance(), WriteMode_POLY_OBJ_getInstance()];
  }
  function get_entries() {
    if ($ENTRIES == null)
      $ENTRIES = enumEntries(values());
    return $ENTRIES;
  }
  var WriteMode_entriesInitialized;
  function WriteMode_initEntries() {
    if (WriteMode_entriesInitialized)
      return Unit_instance;
    WriteMode_entriesInitialized = true;
    WriteMode_OBJ_instance = new WriteMode('OBJ', 0, get_BEGIN_OBJ(), get_END_OBJ());
    WriteMode_LIST_instance = new WriteMode('LIST', 1, get_BEGIN_LIST(), get_END_LIST());
    WriteMode_MAP_instance = new WriteMode('MAP', 2, get_BEGIN_OBJ(), get_END_OBJ());
    WriteMode_POLY_OBJ_instance = new WriteMode('POLY_OBJ', 3, get_BEGIN_LIST(), get_END_LIST());
  }
  var $ENTRIES;
  function WriteMode(name, ordinal, begin, end) {
    Enum.call(this, name, ordinal);
    this.d53_1 = begin;
    this.e53_1 = end;
  }
  function switchMode(_this__u8e3s4, desc) {
    var tmp0_subject = desc.n4c();
    var tmp;
    if (tmp0_subject instanceof PolymorphicKind) {
      tmp = WriteMode_POLY_OBJ_getInstance();
    } else {
      if (equals(tmp0_subject, LIST_getInstance())) {
        tmp = WriteMode_LIST_getInstance();
      } else {
        if (equals(tmp0_subject, MAP_getInstance())) {
          // Inline function 'kotlinx.serialization.json.internal.selectMapMode' call
          var keyDescriptor = carrierDescriptor(desc.p4c(0), _this__u8e3s4.y4b());
          var keyKind = keyDescriptor.n4c();
          var tmp_0;
          var tmp_1;
          if (keyKind instanceof PrimitiveKind) {
            tmp_1 = true;
          } else {
            tmp_1 = equals(keyKind, ENUM_getInstance());
          }
          if (tmp_1) {
            // Inline function 'kotlinx.serialization.json.internal.switchMode.<anonymous>' call
            tmp_0 = WriteMode_MAP_getInstance();
          } else {
            if (_this__u8e3s4.q4v_1.b4x_1) {
              // Inline function 'kotlinx.serialization.json.internal.switchMode.<anonymous>' call
              tmp_0 = WriteMode_LIST_getInstance();
            } else {
              throw InvalidKeyKindException(keyDescriptor);
            }
          }
          tmp = tmp_0;
        } else {
          tmp = WriteMode_OBJ_getInstance();
        }
      }
    }
    return tmp;
  }
  function carrierDescriptor(_this__u8e3s4, module_0) {
    var tmp;
    if (equals(_this__u8e3s4.n4c(), CONTEXTUAL_getInstance())) {
      var tmp0_safe_receiver = getContextualDescriptor(module_0, _this__u8e3s4);
      var tmp1_elvis_lhs = tmp0_safe_receiver == null ? null : carrierDescriptor(tmp0_safe_receiver, module_0);
      tmp = tmp1_elvis_lhs == null ? _this__u8e3s4 : tmp1_elvis_lhs;
    } else if (_this__u8e3s4.m4c()) {
      tmp = carrierDescriptor(_this__u8e3s4.p4c(0), module_0);
    } else {
      tmp = _this__u8e3s4;
    }
    return tmp;
  }
  function WriteMode_OBJ_getInstance() {
    WriteMode_initEntries();
    return WriteMode_OBJ_instance;
  }
  function WriteMode_LIST_getInstance() {
    WriteMode_initEntries();
    return WriteMode_LIST_instance;
  }
  function WriteMode_MAP_getInstance() {
    WriteMode_initEntries();
    return WriteMode_MAP_instance;
  }
  function WriteMode_POLY_OBJ_getInstance() {
    WriteMode_initEntries();
    return WriteMode_POLY_OBJ_instance;
  }
  function appendEscape($this, lastPosition, current) {
    $this.p55(lastPosition, current);
    return appendEsc($this, current + 1 | 0);
  }
  function decodedString($this, lastPosition, currentPosition) {
    $this.p55(lastPosition, currentPosition);
    var result = $this.g4w_1.toString();
    $this.g4w_1.y8(0);
    return result;
  }
  function takePeeked($this) {
    // Inline function 'kotlin.also' call
    var this_0 = ensureNotNull($this.f4w_1);
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlinx.serialization.json.internal.AbstractJsonLexer.takePeeked.<anonymous>' call
    $this.f4w_1 = null;
    return this_0;
  }
  function wasUnquotedString($this) {
    return !(charSequenceGet($this.q55(), $this.d4w_1 - 1 | 0) === _Char___init__impl__6a9atx(34));
  }
  function appendEsc($this, startPosition) {
    var currentPosition = startPosition;
    currentPosition = $this.r55(currentPosition);
    if (currentPosition === -1) {
      $this.c50('Expected escape sequence to continue, got EOF');
    }
    var tmp = $this.q55();
    var tmp0 = currentPosition;
    currentPosition = tmp0 + 1 | 0;
    var currentChar = charSequenceGet(tmp, tmp0);
    if (currentChar === _Char___init__impl__6a9atx(117)) {
      return appendHex($this, $this.q55(), currentPosition);
    }
    // Inline function 'kotlin.code' call
    var tmp$ret$0 = Char__toInt_impl_vasixd(currentChar);
    var c = escapeToChar(tmp$ret$0);
    if (c === _Char___init__impl__6a9atx(0)) {
      $this.c50("Invalid escaped char '" + toString_0(currentChar) + "'");
    }
    $this.g4w_1.z5(c);
    return currentPosition;
  }
  function appendHex($this, source, startPos) {
    if ((startPos + 4 | 0) >= charSequenceLength(source)) {
      $this.d4w_1 = startPos;
      $this.s55();
      if (($this.d4w_1 + 4 | 0) >= charSequenceLength(source)) {
        $this.c50('Unexpected EOF during unicode escape');
      }
      return appendHex($this, source, $this.d4w_1);
    }
    $this.g4w_1.z5(numberToChar((((fromHexChar($this, source, startPos) << 12) + (fromHexChar($this, source, startPos + 1 | 0) << 8) | 0) + (fromHexChar($this, source, startPos + 2 | 0) << 4) | 0) + fromHexChar($this, source, startPos + 3 | 0) | 0));
    return startPos + 4 | 0;
  }
  function fromHexChar($this, source, currentPosition) {
    var character = charSequenceGet(source, currentPosition);
    var tmp;
    if (_Char___init__impl__6a9atx(48) <= character ? character <= _Char___init__impl__6a9atx(57) : false) {
      // Inline function 'kotlin.code' call
      var tmp_0 = Char__toInt_impl_vasixd(character);
      // Inline function 'kotlin.code' call
      var this_0 = _Char___init__impl__6a9atx(48);
      tmp = tmp_0 - Char__toInt_impl_vasixd(this_0) | 0;
    } else if (_Char___init__impl__6a9atx(97) <= character ? character <= _Char___init__impl__6a9atx(102) : false) {
      // Inline function 'kotlin.code' call
      var tmp_1 = Char__toInt_impl_vasixd(character);
      // Inline function 'kotlin.code' call
      var this_1 = _Char___init__impl__6a9atx(97);
      tmp = (tmp_1 - Char__toInt_impl_vasixd(this_1) | 0) + 10 | 0;
    } else if (_Char___init__impl__6a9atx(65) <= character ? character <= _Char___init__impl__6a9atx(70) : false) {
      // Inline function 'kotlin.code' call
      var tmp_2 = Char__toInt_impl_vasixd(character);
      // Inline function 'kotlin.code' call
      var this_2 = _Char___init__impl__6a9atx(65);
      tmp = (tmp_2 - Char__toInt_impl_vasixd(this_2) | 0) + 10 | 0;
    } else {
      $this.c50("Invalid toHexChar char '" + toString_0(character) + "' in unicode escape");
    }
    return tmp;
  }
  function consumeBoolean($this, start) {
    var current = $this.r55(start);
    if (current >= charSequenceLength($this.q55()) ? true : current === -1) {
      $this.c50('EOF');
    }
    // Inline function 'kotlin.code' call
    var tmp = $this.q55();
    var tmp0 = current;
    current = tmp0 + 1 | 0;
    var this_0 = charSequenceGet(tmp, tmp0);
    var tmp1_subject = Char__toInt_impl_vasixd(this_0) | 32;
    var tmp_0;
    // Inline function 'kotlin.code' call
    var this_1 = _Char___init__impl__6a9atx(116);
    if (tmp1_subject === Char__toInt_impl_vasixd(this_1)) {
      consumeBooleanLiteral($this, 'rue', current);
      tmp_0 = true;
    } else {
      // Inline function 'kotlin.code' call
      var this_2 = _Char___init__impl__6a9atx(102);
      if (tmp1_subject === Char__toInt_impl_vasixd(this_2)) {
        consumeBooleanLiteral($this, 'alse', current);
        tmp_0 = false;
      } else {
        $this.c50("Expected valid boolean literal prefix, but had '" + $this.g51() + "'");
      }
    }
    return tmp_0;
  }
  function consumeBooleanLiteral($this, literalSuffix, current) {
    if ((charSequenceLength($this.q55()) - current | 0) < literalSuffix.length) {
      $this.c50('Unexpected end of boolean literal');
    }
    var inductionVariable = 0;
    var last = charSequenceLength(literalSuffix) - 1 | 0;
    if (inductionVariable <= last)
      do {
        var i = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        var expected = charSequenceGet(literalSuffix, i);
        var actual = charSequenceGet($this.q55(), current + i | 0);
        // Inline function 'kotlin.code' call
        var tmp = Char__toInt_impl_vasixd(expected);
        // Inline function 'kotlin.code' call
        if (!(tmp === (Char__toInt_impl_vasixd(actual) | 32))) {
          $this.c50("Expected valid boolean literal prefix, but had '" + $this.g51() + "'");
        }
      }
       while (inductionVariable <= last);
    $this.d4w_1 = current + literalSuffix.length | 0;
  }
  function consumeNumericLiteral$calculateExponent(exponentAccumulator, isExponentPositive) {
    var tmp;
    switch (isExponentPositive) {
      case false:
        // Inline function 'kotlin.math.pow' call

        var x = -exponentAccumulator.a7();
        tmp = Math.pow(10.0, x);
        break;
      case true:
        // Inline function 'kotlin.math.pow' call

        var x_0 = exponentAccumulator.a7();
        tmp = Math.pow(10.0, x_0);
        break;
      default:
        noWhenBranchMatchedException();
        break;
    }
    return tmp;
  }
  function AbstractJsonLexer() {
    this.d4w_1 = 0;
    this.e4w_1 = new JsonPath();
    this.f4w_1 = null;
    this.g4w_1 = StringBuilder_init_$Create$();
  }
  protoOf(AbstractJsonLexer).s55 = function () {
  };
  protoOf(AbstractJsonLexer).t55 = function (c) {
    return (((c === _Char___init__impl__6a9atx(125) ? true : c === _Char___init__impl__6a9atx(93)) ? true : c === _Char___init__impl__6a9atx(58)) ? true : c === _Char___init__impl__6a9atx(44)) ? false : true;
  };
  protoOf(AbstractJsonLexer).h4w = function () {
    var nextToken = this.i51();
    if (!(nextToken === 10)) {
      this.c50('Expected EOF after parsing, but had ' + toString_0(charSequenceGet(this.q55(), this.d4w_1 - 1 | 0)) + ' instead');
    }
  };
  protoOf(AbstractJsonLexer).c51 = function (expected) {
    var token = this.i51();
    if (!(token === expected)) {
      this.u55(expected);
    }
    return token;
  };
  protoOf(AbstractJsonLexer).s52 = function (expected) {
    this.s55();
    var source = this.q55();
    var cpos = this.d4w_1;
    $l$loop_0: while (true) {
      cpos = this.r55(cpos);
      if (cpos === -1)
        break $l$loop_0;
      var tmp0 = cpos;
      cpos = tmp0 + 1 | 0;
      var c = charSequenceGet(source, tmp0);
      if (((c === _Char___init__impl__6a9atx(32) ? true : c === _Char___init__impl__6a9atx(10)) ? true : c === _Char___init__impl__6a9atx(13)) ? true : c === _Char___init__impl__6a9atx(9))
        continue $l$loop_0;
      this.d4w_1 = cpos;
      if (c === expected)
        return Unit_instance;
      this.v55(expected);
    }
    this.d4w_1 = cpos;
    this.v55(expected);
  };
  protoOf(AbstractJsonLexer).v55 = function (expected) {
    if (this.d4w_1 > 0 ? expected === _Char___init__impl__6a9atx(34) : false) {
      var tmp$ret$1;
      $l$block: {
        // Inline function 'kotlinx.serialization.json.internal.AbstractJsonLexer.withPositionRollback' call
        var snapshot = this.d4w_1;
        try {
          // Inline function 'kotlinx.serialization.json.internal.AbstractJsonLexer.unexpectedToken.<anonymous>' call
          this.d4w_1 = this.d4w_1 - 1 | 0;
          tmp$ret$1 = this.g51();
          break $l$block;
        }finally {
          this.d4w_1 = snapshot;
        }
      }
      var inputLiteral = tmp$ret$1;
      if (inputLiteral === 'null') {
        this.b50("Expected string literal but 'null' literal was found", this.d4w_1 - 1 | 0, "Use 'coerceInputValues = true' in 'Json {}' builder to coerce nulls to default values.");
      }
    }
    this.u55(charToTokenClass(expected));
  };
  protoOf(AbstractJsonLexer).w55 = function (expectedToken, wasConsumed) {
    var expected = tokenDescription(expectedToken);
    var position = wasConsumed ? this.d4w_1 - 1 | 0 : this.d4w_1;
    var s = (this.d4w_1 === charSequenceLength(this.q55()) ? true : position < 0) ? 'EOF' : toString_0(charSequenceGet(this.q55(), position));
    this.c50('Expected ' + expected + ", but had '" + s + "' instead", position);
  };
  protoOf(AbstractJsonLexer).u55 = function (expectedToken, wasConsumed, $super) {
    wasConsumed = wasConsumed === VOID ? true : wasConsumed;
    return $super === VOID ? this.w55(expectedToken, wasConsumed) : $super.w55.call(this, expectedToken, wasConsumed);
  };
  protoOf(AbstractJsonLexer).d51 = function () {
    var source = this.q55();
    var cpos = this.d4w_1;
    $l$loop_0: while (true) {
      cpos = this.r55(cpos);
      if (cpos === -1)
        break $l$loop_0;
      var ch = charSequenceGet(source, cpos);
      if (((ch === _Char___init__impl__6a9atx(32) ? true : ch === _Char___init__impl__6a9atx(10)) ? true : ch === _Char___init__impl__6a9atx(13)) ? true : ch === _Char___init__impl__6a9atx(9)) {
        cpos = cpos + 1 | 0;
        continue $l$loop_0;
      }
      this.d4w_1 = cpos;
      return charToTokenClass(ch);
    }
    this.d4w_1 = cpos;
    return 10;
  };
  protoOf(AbstractJsonLexer).u52 = function (doConsume) {
    var current = this.x55();
    current = this.r55(current);
    var len = charSequenceLength(this.q55()) - current | 0;
    if (len < 4 ? true : current === -1)
      return false;
    var inductionVariable = 0;
    if (inductionVariable <= 3)
      do {
        var i = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        if (!(charSequenceGet('null', i) === charSequenceGet(this.q55(), current + i | 0)))
          return false;
      }
       while (inductionVariable <= 3);
    if (len > 4 ? charToTokenClass(charSequenceGet(this.q55(), current + 4 | 0)) === 0 : false)
      return false;
    if (doConsume) {
      this.d4w_1 = current + 4 | 0;
    }
    return true;
  };
  protoOf(AbstractJsonLexer).f53 = function (doConsume, $super) {
    doConsume = doConsume === VOID ? true : doConsume;
    return $super === VOID ? this.u52(doConsume) : $super.u52.call(this, doConsume);
  };
  protoOf(AbstractJsonLexer).x55 = function () {
    var current = this.d4w_1;
    $l$loop_0: while (true) {
      current = this.r55(current);
      if (current === -1)
        break $l$loop_0;
      var c = charSequenceGet(this.q55(), current);
      if (((c === _Char___init__impl__6a9atx(32) ? true : c === _Char___init__impl__6a9atx(10)) ? true : c === _Char___init__impl__6a9atx(13)) ? true : c === _Char___init__impl__6a9atx(9)) {
        current = current + 1 | 0;
      } else {
        break $l$loop_0;
      }
    }
    this.d4w_1 = current;
    return current;
  };
  protoOf(AbstractJsonLexer).v52 = function (isLenient) {
    var token = this.d51();
    var tmp;
    if (isLenient) {
      if (!(token === 1) ? !(token === 0) : false)
        return null;
      tmp = this.g51();
    } else {
      if (!(token === 1))
        return null;
      tmp = this.f51();
    }
    var string = tmp;
    this.f4w_1 = string;
    return string;
  };
  protoOf(AbstractJsonLexer).y55 = function () {
    this.f4w_1 = null;
  };
  protoOf(AbstractJsonLexer).z55 = function (startPos, endPos) {
    // Inline function 'kotlin.text.substring' call
    var this_0 = this.q55();
    return toString(charSequenceSubSequence(this_0, startPos, endPos));
  };
  protoOf(AbstractJsonLexer).f51 = function () {
    if (!(this.f4w_1 == null)) {
      return takePeeked(this);
    }
    return this.y52();
  };
  protoOf(AbstractJsonLexer).consumeString2 = function (source, startPosition, current) {
    var currentPosition = current;
    var lastPosition = startPosition;
    var char = charSequenceGet(source, currentPosition);
    var usedAppend = false;
    while (!(char === _Char___init__impl__6a9atx(34))) {
      if (char === _Char___init__impl__6a9atx(92)) {
        usedAppend = true;
        currentPosition = this.r55(appendEscape(this, lastPosition, currentPosition));
        if (currentPosition === -1) {
          this.c50('Unexpected EOF', currentPosition);
        }
        lastPosition = currentPosition;
      } else {
        currentPosition = currentPosition + 1 | 0;
        if (currentPosition >= charSequenceLength(source)) {
          usedAppend = true;
          this.p55(lastPosition, currentPosition);
          currentPosition = this.r55(currentPosition);
          if (currentPosition === -1) {
            this.c50('Unexpected EOF', currentPosition);
          }
          lastPosition = currentPosition;
        }
      }
      char = charSequenceGet(source, currentPosition);
    }
    var tmp;
    if (!usedAppend) {
      tmp = this.z55(lastPosition, currentPosition);
    } else {
      tmp = decodedString(this, lastPosition, currentPosition);
    }
    var string = tmp;
    this.d4w_1 = currentPosition + 1 | 0;
    return string;
  };
  protoOf(AbstractJsonLexer).z52 = function () {
    var result = this.g51();
    if (result === 'null' ? wasUnquotedString(this) : false) {
      this.c50("Unexpected 'null' value instead of string literal");
    }
    return result;
  };
  protoOf(AbstractJsonLexer).g51 = function () {
    if (!(this.f4w_1 == null)) {
      return takePeeked(this);
    }
    var current = this.x55();
    if (current >= charSequenceLength(this.q55()) ? true : current === -1) {
      this.c50('EOF', current);
    }
    var token = charToTokenClass(charSequenceGet(this.q55(), current));
    if (token === 1) {
      return this.f51();
    }
    if (!(token === 0)) {
      this.c50('Expected beginning of the string, but got ' + toString_0(charSequenceGet(this.q55(), current)));
    }
    var usedAppend = false;
    while (charToTokenClass(charSequenceGet(this.q55(), current)) === 0) {
      current = current + 1 | 0;
      if (current >= charSequenceLength(this.q55())) {
        usedAppend = true;
        this.p55(this.d4w_1, current);
        var eof = this.r55(current);
        if (eof === -1) {
          this.d4w_1 = current;
          return decodedString(this, 0, 0);
        } else {
          current = eof;
        }
      }
    }
    var tmp;
    if (!usedAppend) {
      tmp = this.z55(this.d4w_1, current);
    } else {
      tmp = decodedString(this, this.d4w_1, current);
    }
    var result = tmp;
    this.d4w_1 = current;
    return result;
  };
  protoOf(AbstractJsonLexer).p55 = function (fromIndex, toIndex) {
    this.g4w_1.s8(this.q55(), fromIndex, toIndex);
  };
  protoOf(AbstractJsonLexer).x52 = function (allowLenientStrings) {
    // Inline function 'kotlin.collections.mutableListOf' call
    var tokenStack = ArrayList_init_$Create$();
    var lastToken = this.d51();
    if (!(lastToken === 8) ? !(lastToken === 6) : false) {
      this.g51();
      return Unit_instance;
    }
    $l$loop: while (true) {
      lastToken = this.d51();
      if (lastToken === 1) {
        if (allowLenientStrings) {
          this.g51();
        } else {
          this.y52();
        }
        continue $l$loop;
      }
      var tmp0_subject = lastToken;
      if (tmp0_subject === 8 ? true : tmp0_subject === 6) {
        tokenStack.i1(lastToken);
      } else if (tmp0_subject === 9) {
        if (!(last(tokenStack) === 8))
          throw JsonDecodingException_0(this.d4w_1, 'found ] instead of } at path: ' + this.e4w_1, this.q55());
        removeLast(tokenStack);
      } else if (tmp0_subject === 7) {
        if (!(last(tokenStack) === 6))
          throw JsonDecodingException_0(this.d4w_1, 'found } instead of ] at path: ' + this.e4w_1, this.q55());
        removeLast(tokenStack);
      } else if (tmp0_subject === 10) {
        this.c50('Unexpected end of input due to malformed JSON during ignoring unknown keys');
      }
      this.i51();
      if (tokenStack.u() === 0)
        return Unit_instance;
    }
  };
  protoOf(AbstractJsonLexer).toString = function () {
    return "JsonReader(source='" + this.q55() + "', currentPosition=" + this.d4w_1 + ')';
  };
  protoOf(AbstractJsonLexer).w52 = function (key) {
    var processed = this.z55(0, this.d4w_1);
    var lastIndexOf_0 = lastIndexOf(processed, key);
    this.b50("Encountered an unknown key '" + key + "'", lastIndexOf_0, "Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys.");
  };
  protoOf(AbstractJsonLexer).b50 = function (message, position, hint) {
    var tmp;
    // Inline function 'kotlin.text.isEmpty' call
    if (charSequenceLength(hint) === 0) {
      tmp = '';
    } else {
      tmp = '\n' + hint;
    }
    var hintMessage = tmp;
    throw JsonDecodingException_0(position, message + ' at path: ' + this.e4w_1.p50() + hintMessage, this.q55());
  };
  protoOf(AbstractJsonLexer).c50 = function (message, position, hint, $super) {
    position = position === VOID ? this.d4w_1 : position;
    hint = hint === VOID ? '' : hint;
    return $super === VOID ? this.b50(message, position, hint) : $super.b50.call(this, message, position, hint);
  };
  protoOf(AbstractJsonLexer).u4x = function () {
    var current = this.x55();
    current = this.r55(current);
    if (current >= charSequenceLength(this.q55()) ? true : current === -1) {
      this.c50('EOF');
    }
    var tmp;
    if (charSequenceGet(this.q55(), current) === _Char___init__impl__6a9atx(34)) {
      current = current + 1 | 0;
      if (current === charSequenceLength(this.q55())) {
        this.c50('EOF');
      }
      tmp = true;
    } else {
      tmp = false;
    }
    var hasQuotation = tmp;
    var accumulator = new Long(0, 0);
    var exponentAccumulator = new Long(0, 0);
    var isNegative = false;
    var isExponentPositive = false;
    var hasExponent = false;
    var start = current;
    $l$loop_4: while (!(current === charSequenceLength(this.q55()))) {
      var ch = charSequenceGet(this.q55(), current);
      if ((ch === _Char___init__impl__6a9atx(101) ? true : ch === _Char___init__impl__6a9atx(69)) ? !hasExponent : false) {
        if (current === start) {
          this.c50('Unexpected symbol ' + toString_0(ch) + ' in numeric literal');
        }
        isExponentPositive = true;
        hasExponent = true;
        current = current + 1 | 0;
        continue $l$loop_4;
      }
      if (ch === _Char___init__impl__6a9atx(45) ? hasExponent : false) {
        if (current === start) {
          this.c50("Unexpected symbol '-' in numeric literal");
        }
        isExponentPositive = false;
        current = current + 1 | 0;
        continue $l$loop_4;
      }
      if (ch === _Char___init__impl__6a9atx(43) ? hasExponent : false) {
        if (current === start) {
          this.c50("Unexpected symbol '+' in numeric literal");
        }
        isExponentPositive = true;
        current = current + 1 | 0;
        continue $l$loop_4;
      }
      if (ch === _Char___init__impl__6a9atx(45)) {
        if (!(current === start)) {
          this.c50("Unexpected symbol '-' in numeric literal");
        }
        isNegative = true;
        current = current + 1 | 0;
        continue $l$loop_4;
      }
      var token = charToTokenClass(ch);
      if (!(token === 0))
        break $l$loop_4;
      current = current + 1 | 0;
      var digit = Char__minus_impl_a2frrh(ch, _Char___init__impl__6a9atx(48));
      if (!(0 <= digit ? digit <= 9 : false)) {
        this.c50("Unexpected symbol '" + toString_0(ch) + "' in numeric literal");
      }
      if (hasExponent) {
        // Inline function 'kotlin.Long.plus' call
        // Inline function 'kotlin.Long.times' call
        exponentAccumulator = exponentAccumulator.cb(toLong(10)).lc(toLong(digit));
        continue $l$loop_4;
      }
      // Inline function 'kotlin.Long.minus' call
      // Inline function 'kotlin.Long.times' call
      accumulator = accumulator.cb(toLong(10)).mc(toLong(digit));
      if (accumulator.c7(new Long(0, 0)) > 0) {
        this.c50('Numeric value overflow');
      }
    }
    var hasChars = !(current === start);
    if (start === current ? true : isNegative ? start === (current - 1 | 0) : false) {
      this.c50('Expected numeric literal');
    }
    if (hasQuotation) {
      if (!hasChars) {
        this.c50('EOF');
      }
      if (!(charSequenceGet(this.q55(), current) === _Char___init__impl__6a9atx(34))) {
        this.c50('Expected closing quotation mark');
      }
      current = current + 1 | 0;
    }
    this.d4w_1 = current;
    if (hasExponent) {
      var doubleAccumulator = accumulator.a7() * consumeNumericLiteral$calculateExponent(exponentAccumulator, isExponentPositive);
      var tmp_0;
      Companion_getInstance_3();
      if (doubleAccumulator > (new Long(-1, 2147483647)).a7()) {
        tmp_0 = true;
      } else {
        Companion_getInstance_3();
        tmp_0 = doubleAccumulator < (new Long(0, -2147483648)).a7();
      }
      if (tmp_0) {
        this.c50('Numeric value overflow');
      }
      // Inline function 'kotlin.math.floor' call
      if (!(Math.floor(doubleAccumulator) === doubleAccumulator)) {
        this.c50("Can't convert " + doubleAccumulator + ' to Long');
      }
      accumulator = numberToLong(doubleAccumulator);
    }
    var tmp_1;
    if (isNegative) {
      tmp_1 = accumulator;
    } else {
      var tmp_2 = accumulator;
      Companion_getInstance_3();
      if (!tmp_2.equals(new Long(0, -2147483648))) {
        tmp_1 = accumulator.b7();
      } else {
        this.c50('Numeric value overflow');
      }
    }
    return tmp_1;
  };
  protoOf(AbstractJsonLexer).g53 = function () {
    var current = this.x55();
    if (current === charSequenceLength(this.q55())) {
      this.c50('EOF');
    }
    var tmp;
    if (charSequenceGet(this.q55(), current) === _Char___init__impl__6a9atx(34)) {
      current = current + 1 | 0;
      tmp = true;
    } else {
      tmp = false;
    }
    var hasQuotation = tmp;
    var result = consumeBoolean(this, current);
    if (hasQuotation) {
      if (this.d4w_1 === charSequenceLength(this.q55())) {
        this.c50('EOF');
      }
      if (!(charSequenceGet(this.q55(), this.d4w_1) === _Char___init__impl__6a9atx(34))) {
        this.c50('Expected closing quotation mark');
      }
      this.d4w_1 = this.d4w_1 + 1 | 0;
    }
    return result;
  };
  function charToTokenClass(c) {
    var tmp;
    // Inline function 'kotlin.code' call
    if (Char__toInt_impl_vasixd(c) < 126) {
      var tmp_0 = CharMappings_getInstance().b56_1;
      // Inline function 'kotlin.code' call
      tmp = tmp_0[Char__toInt_impl_vasixd(c)];
    } else {
      tmp = 0;
    }
    return tmp;
  }
  function get_TC_WHITESPACE() {
    return TC_WHITESPACE;
  }
  var TC_WHITESPACE;
  function get_TC_EOF() {
    return TC_EOF;
  }
  var TC_EOF;
  function get_STRING() {
    return STRING;
  }
  var STRING;
  function get_TC_STRING() {
    return TC_STRING;
  }
  var TC_STRING;
  function get_STRING_ESC() {
    return STRING_ESC;
  }
  var STRING_ESC;
  function get_TC_BEGIN_OBJ() {
    return TC_BEGIN_OBJ;
  }
  var TC_BEGIN_OBJ;
  function get_TC_COLON() {
    return TC_COLON;
  }
  var TC_COLON;
  function get_TC_COMMA() {
    return TC_COMMA;
  }
  var TC_COMMA;
  function get_COLON() {
    return COLON;
  }
  var COLON;
  function get_BEGIN_OBJ() {
    return BEGIN_OBJ;
  }
  var BEGIN_OBJ;
  function get_END_OBJ() {
    return END_OBJ;
  }
  var END_OBJ;
  function get_BEGIN_LIST() {
    return BEGIN_LIST;
  }
  var BEGIN_LIST;
  function get_END_LIST() {
    return END_LIST;
  }
  var END_LIST;
  function get_lenientHint() {
    return lenientHint;
  }
  var lenientHint;
  function get_specialFlowingValuesHint() {
    return specialFlowingValuesHint;
  }
  var specialFlowingValuesHint;
  function get_allowStructuredMapKeysHint() {
    return allowStructuredMapKeysHint;
  }
  var allowStructuredMapKeysHint;
  function get_ignoreUnknownKeysHint() {
    return ignoreUnknownKeysHint;
  }
  var ignoreUnknownKeysHint;
  function get_INVALID() {
    return INVALID;
  }
  var INVALID;
  function get_COMMA() {
    return COMMA;
  }
  var COMMA;
  function get_NULL() {
    return NULL;
  }
  var NULL;
  function tokenDescription(token) {
    return token === 1 ? "quotation mark '\"'" : token === 2 ? "string escape sequence '\\'" : token === 4 ? "comma ','" : token === 5 ? "colon ':'" : token === 6 ? "start of the object '{'" : token === 7 ? "end of the object '}'" : token === 8 ? "start of the array '['" : token === 9 ? "end of the array ']'" : token === 10 ? 'end of the input' : token === 127 ? 'invalid token' : 'valid token';
  }
  function get_TC_OTHER() {
    return TC_OTHER;
  }
  var TC_OTHER;
  function escapeToChar(c) {
    return c < 117 ? CharMappings_getInstance().a56_1[c] : _Char___init__impl__6a9atx(0);
  }
  function get_TC_BEGIN_LIST() {
    return TC_BEGIN_LIST;
  }
  var TC_BEGIN_LIST;
  function get_TC_END_LIST() {
    return TC_END_LIST;
  }
  var TC_END_LIST;
  function get_TC_END_OBJ() {
    return TC_END_OBJ;
  }
  var TC_END_OBJ;
  function initEscape($this) {
    var inductionVariable = 0;
    if (inductionVariable <= 31)
      do {
        var i = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        initC2ESC($this, i, _Char___init__impl__6a9atx(117));
      }
       while (inductionVariable <= 31);
    initC2ESC($this, 8, _Char___init__impl__6a9atx(98));
    initC2ESC($this, 9, _Char___init__impl__6a9atx(116));
    initC2ESC($this, 10, _Char___init__impl__6a9atx(110));
    initC2ESC($this, 12, _Char___init__impl__6a9atx(102));
    initC2ESC($this, 13, _Char___init__impl__6a9atx(114));
    initC2ESC_0($this, _Char___init__impl__6a9atx(47), _Char___init__impl__6a9atx(47));
    initC2ESC_0($this, _Char___init__impl__6a9atx(34), _Char___init__impl__6a9atx(34));
    initC2ESC_0($this, _Char___init__impl__6a9atx(92), _Char___init__impl__6a9atx(92));
  }
  function initCharToToken($this) {
    var inductionVariable = 0;
    if (inductionVariable <= 32)
      do {
        var i = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        initC2TC($this, i, 127);
      }
       while (inductionVariable <= 32);
    initC2TC($this, 9, 3);
    initC2TC($this, 10, 3);
    initC2TC($this, 13, 3);
    initC2TC($this, 32, 3);
    initC2TC_0($this, _Char___init__impl__6a9atx(44), 4);
    initC2TC_0($this, _Char___init__impl__6a9atx(58), 5);
    initC2TC_0($this, _Char___init__impl__6a9atx(123), 6);
    initC2TC_0($this, _Char___init__impl__6a9atx(125), 7);
    initC2TC_0($this, _Char___init__impl__6a9atx(91), 8);
    initC2TC_0($this, _Char___init__impl__6a9atx(93), 9);
    initC2TC_0($this, _Char___init__impl__6a9atx(34), 1);
    initC2TC_0($this, _Char___init__impl__6a9atx(92), 2);
  }
  function initC2ESC($this, c, esc) {
    if (!(esc === _Char___init__impl__6a9atx(117))) {
      // Inline function 'kotlin.code' call
      var tmp$ret$0 = Char__toInt_impl_vasixd(esc);
      $this.a56_1[tmp$ret$0] = numberToChar(c);
    }
  }
  function initC2ESC_0($this, c, esc) {
    // Inline function 'kotlin.code' call
    var tmp$ret$0 = Char__toInt_impl_vasixd(c);
    return initC2ESC($this, tmp$ret$0, esc);
  }
  function initC2TC($this, c, cl) {
    $this.b56_1[c] = cl;
  }
  function initC2TC_0($this, c, cl) {
    // Inline function 'kotlin.code' call
    var tmp$ret$0 = Char__toInt_impl_vasixd(c);
    return initC2TC($this, tmp$ret$0, cl);
  }
  function CharMappings() {
    CharMappings_instance = this;
    this.a56_1 = charArray(117);
    this.b56_1 = new Int8Array(126);
    initEscape(this);
    initCharToToken(this);
  }
  var CharMappings_instance;
  function CharMappings_getInstance() {
    if (CharMappings_instance == null)
      new CharMappings();
    return CharMappings_instance;
  }
  function StringJsonLexer(source) {
    AbstractJsonLexer.call(this);
    this.g56_1 = source;
  }
  protoOf(StringJsonLexer).q55 = function () {
    return this.g56_1;
  };
  protoOf(StringJsonLexer).r55 = function (position) {
    return position < this.g56_1.length ? position : -1;
  };
  protoOf(StringJsonLexer).i51 = function () {
    var source = this.g56_1;
    $l$loop: while (!(this.d4w_1 === -1) ? this.d4w_1 < source.length : false) {
      var tmp1 = this.d4w_1;
      this.d4w_1 = tmp1 + 1 | 0;
      var ch = charSequenceGet(source, tmp1);
      var tc = charToTokenClass(ch);
      var tmp;
      if (tc === get_TC_WHITESPACE()) {
        continue $l$loop;
      } else {
        tmp = tc;
      }
      return tmp;
    }
    return get_TC_EOF();
  };
  protoOf(StringJsonLexer).t52 = function () {
    var current = this.x55();
    if (current === this.g56_1.length ? true : current === -1)
      return false;
    if (charSequenceGet(this.g56_1, current) === _Char___init__impl__6a9atx(44)) {
      this.d4w_1 = this.d4w_1 + 1 | 0;
      return true;
    }
    return false;
  };
  protoOf(StringJsonLexer).e51 = function () {
    var current = this.d4w_1;
    if (current === -1)
      return false;
    $l$loop: while (current < this.g56_1.length) {
      var c = charSequenceGet(this.g56_1, current);
      if (((c === _Char___init__impl__6a9atx(32) ? true : c === _Char___init__impl__6a9atx(10)) ? true : c === _Char___init__impl__6a9atx(13)) ? true : c === _Char___init__impl__6a9atx(9)) {
        current = current + 1 | 0;
        continue $l$loop;
      }
      this.d4w_1 = current;
      return this.t55(c);
    }
    this.d4w_1 = current;
    return false;
  };
  protoOf(StringJsonLexer).x55 = function () {
    var current = this.d4w_1;
    if (current === -1)
      return current;
    $l$loop: while (current < this.g56_1.length) {
      var c = charSequenceGet(this.g56_1, current);
      if (((c === _Char___init__impl__6a9atx(32) ? true : c === _Char___init__impl__6a9atx(10)) ? true : c === _Char___init__impl__6a9atx(13)) ? true : c === _Char___init__impl__6a9atx(9)) {
        current = current + 1 | 0;
      } else {
        break $l$loop;
      }
    }
    this.d4w_1 = current;
    return current;
  };
  protoOf(StringJsonLexer).s52 = function (expected) {
    if (this.d4w_1 === -1) {
      this.v55(expected);
    }
    var source = this.g56_1;
    $l$loop: while (this.d4w_1 < source.length) {
      var tmp1 = this.d4w_1;
      this.d4w_1 = tmp1 + 1 | 0;
      var c = charSequenceGet(source, tmp1);
      if (((c === _Char___init__impl__6a9atx(32) ? true : c === _Char___init__impl__6a9atx(10)) ? true : c === _Char___init__impl__6a9atx(13)) ? true : c === _Char___init__impl__6a9atx(9))
        continue $l$loop;
      if (c === expected)
        return Unit_instance;
      this.v55(expected);
    }
    this.d4w_1 = -1;
    this.v55(expected);
  };
  protoOf(StringJsonLexer).y52 = function () {
    this.s52(get_STRING());
    var current = this.d4w_1;
    var closingQuote = indexOf(this.g56_1, _Char___init__impl__6a9atx(34), current);
    if (closingQuote === -1) {
      this.g51();
      this.w55(get_TC_STRING(), false);
    }
    var inductionVariable = current;
    if (inductionVariable < closingQuote)
      do {
        var i = inductionVariable;
        inductionVariable = inductionVariable + 1 | 0;
        if (charSequenceGet(this.g56_1, i) === get_STRING_ESC()) {
          return this.consumeString2(this.g56_1, this.d4w_1, i);
        }
      }
       while (inductionVariable < closingQuote);
    this.d4w_1 = closingQuote + 1 | 0;
    // Inline function 'kotlin.text.substring' call
    // Inline function 'kotlin.js.asDynamic' call
    return this.g56_1.substring(current, closingQuote);
  };
  protoOf(StringJsonLexer).a53 = function (keyToMatch, isLenient) {
    var positionSnapshot = this.d4w_1;
    try {
      if (!(this.i51() === get_TC_BEGIN_OBJ()))
        return null;
      var firstKey = this.v52(isLenient);
      if (!(firstKey === keyToMatch))
        return null;
      this.y55();
      if (!(this.i51() === get_TC_COLON()))
        return null;
      return this.v52(isLenient);
    }finally {
      this.d4w_1 = positionSnapshot;
      this.y55();
    }
  };
  function get_schemaCache(_this__u8e3s4) {
    return _this__u8e3s4.s4v_1;
  }
  function JsonToStringWriter() {
    this.u4v_1 = StringBuilder_init_$Create$_0(128);
  }
  protoOf(JsonToStringWriter).i4z = function (value) {
    this.u4v_1.w8(value);
  };
  protoOf(JsonToStringWriter).c4z = function (char) {
    this.u4v_1.z5(char);
  };
  protoOf(JsonToStringWriter).e4z = function (text) {
    this.u4v_1.y5(text);
  };
  protoOf(JsonToStringWriter).o4z = function (text) {
    printQuoted(this.u4v_1, text);
  };
  protoOf(JsonToStringWriter).qy = function () {
    this.u4v_1.z8();
  };
  protoOf(JsonToStringWriter).toString = function () {
    return this.u4v_1.toString();
  };
  function createMapForCache(initialCapacity) {
    return HashMap_init_$Create$(initialCapacity);
  }
  //region block: post-declaration
  protoOf(defer$1).g4c = get_isNullable;
  protoOf(defer$1).m4c = get_isInline;
  protoOf(defer$1).k4c = get_annotations;
  protoOf(PolymorphismValidator).x4u = contextual;
  //endregion
  //region block: init
  Companion_instance_0 = new Companion();
  Companion_instance_1 = new Companion_0();
  Companion_instance_2 = new Companion_1();
  Companion_instance_3 = new Companion_2();
  Tombstone_instance = new Tombstone();
  PRIMITIVE_TAG = 'primitive';
  TC_WHITESPACE = 3;
  TC_EOF = 10;
  STRING = _Char___init__impl__6a9atx(34);
  TC_STRING = 1;
  STRING_ESC = _Char___init__impl__6a9atx(92);
  TC_BEGIN_OBJ = 6;
  TC_COLON = 5;
  TC_COMMA = 4;
  COLON = _Char___init__impl__6a9atx(58);
  BEGIN_OBJ = _Char___init__impl__6a9atx(123);
  END_OBJ = _Char___init__impl__6a9atx(125);
  BEGIN_LIST = _Char___init__impl__6a9atx(91);
  END_LIST = _Char___init__impl__6a9atx(93);
  lenientHint = "Use 'isLenient = true' in 'Json {}' builder to accept non-compliant JSON.";
  specialFlowingValuesHint = "It is possible to deserialize them using 'JsonBuilder.allowSpecialFloatingPointValues = true'";
  allowStructuredMapKeysHint = "Use 'allowStructuredMapKeys = true' in 'Json {}' builder to convert such maps to [key1, value1, key2, value2,...] arrays.";
  ignoreUnknownKeysHint = "Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys.";
  INVALID = _Char___init__impl__6a9atx(0);
  COMMA = _Char___init__impl__6a9atx(44);
  NULL = 'null';
  TC_OTHER = 0;
  TC_BEGIN_LIST = 8;
  TC_END_LIST = 9;
  TC_END_OBJ = 7;
  //endregion
  //region block: exports
  _.$_$ = _.$_$ || {};
  _.$_$.a = Default_getInstance;
  _.$_$.b = Companion_instance_0;
  _.$_$.c = JsonElementSerializer_getInstance;
  _.$_$.d = JsonNull_getInstance;
  _.$_$.e = JsonObjectSerializer_getInstance;
  _.$_$.f = JsonArray;
  _.$_$.g = JsonContentPolymorphicSerializer;
  _.$_$.h = JsonDecoder;
  _.$_$.i = JsonNull;
  _.$_$.j = JsonObject;
  _.$_$.k = JsonPrimitive_2;
  _.$_$.l = JsonPrimitive_0;
  _.$_$.m = JsonPrimitive_1;
  _.$_$.n = Json_0;
  _.$_$.o = Json;
  _.$_$.p = get_boolean;
  _.$_$.q = get_double;
  _.$_$.r = get_float;
  _.$_$.s = get_int;
  _.$_$.t = get_intOrNull;
  _.$_$.u = get_jsonObject;
  _.$_$.v = get_jsonPrimitive;
  _.$_$.w = get_long;
  //endregion
  return _;
}(module.exports, require('./kotlinx-serialization-kotlinx-serialization-core.js'), require('./kotlin-kotlin-stdlib.js')));

//# sourceMappingURL=kotlinx-serialization-kotlinx-serialization-json.js.map
