(function (_, kotlin_kotlin, kotlin_org_kodein_type_kaverit) {
  'use strict';
  //region block: imports
  var imul = Math.imul;
  var protoOf = kotlin_kotlin.$_$.uc;
  var classMeta = kotlin_kotlin.$_$.jb;
  var setMetadataFor = kotlin_kotlin.$_$.vc;
  var VOID = kotlin_kotlin.$_$.f;
  var LinkedHashMap_init_$Create$ = kotlin_kotlin.$_$.v;
  var first = kotlin_kotlin.$_$.p7;
  var ArrayList_init_$Create$ = kotlin_kotlin.$_$.m;
  var Unit_instance = kotlin_kotlin.$_$.m5;
  var filterNotNull = kotlin_kotlin.$_$.m7;
  var sorted = kotlin_kotlin.$_$.n9;
  var StringBuilder_init_$Create$ = kotlin_kotlin.$_$.f1;
  var repeat = kotlin_kotlin.$_$.rf;
  var ensureNotNull = kotlin_kotlin.$_$.yi;
  var KProperty1 = kotlin_kotlin.$_$.td;
  var getPropertyCallableRef = kotlin_kotlin.$_$.sb;
  var objectMeta = kotlin_kotlin.$_$.tc;
  var toString = kotlin_kotlin.$_$.lj;
  var Companion_getInstance = kotlin_org_kodein_type_kaverit.$_$.a;
  var equals = kotlin_kotlin.$_$.mb;
  var objectCreate = kotlin_kotlin.$_$.sc;
  var RuntimeException = kotlin_kotlin.$_$.ei;
  var RuntimeException_init_$Init$ = kotlin_kotlin.$_$.m2;
  var captureStack = kotlin_kotlin.$_$.db;
  var hashCode = kotlin_kotlin.$_$.ub;
  var THROW_CCE = kotlin_kotlin.$_$.fi;
  var interfaceMeta = kotlin_kotlin.$_$.vb;
  var IllegalStateException_init_$Create$ = kotlin_kotlin.$_$.a2;
  var getBooleanHashCode = kotlin_kotlin.$_$.pb;
  var getStringHashCode = kotlin_kotlin.$_$.tb;
  var TypeToken = kotlin_org_kodein_type_kaverit.$_$.b;
  var isInterface = kotlin_kotlin.$_$.ec;
  var joinToString = kotlin_kotlin.$_$.z7;
  var erasedOf = kotlin_org_kodein_type_kaverit.$_$.c;
  var ArrayList_init_$Create$_0 = kotlin_kotlin.$_$.l;
  var toString_0 = kotlin_kotlin.$_$.zc;
  var HashSet_init_$Create$ = kotlin_kotlin.$_$.s;
  var HashMap_init_$Create$ = kotlin_kotlin.$_$.p;
  var addAll = kotlin_kotlin.$_$.e6;
  var collectionSizeOrDefault = kotlin_kotlin.$_$.n6;
  var charSequenceLength = kotlin_kotlin.$_$.hb;
  var Enum = kotlin_kotlin.$_$.sh;
  var Map = kotlin_kotlin.$_$.y5;
  var listOf = kotlin_kotlin.$_$.i8;
  var plus = kotlin_kotlin.$_$.x8;
  var emptyList = kotlin_kotlin.$_$.i7;
  var plus_0 = kotlin_kotlin.$_$.y8;
  var checkIndexOverflow = kotlin_kotlin.$_$.l6;
  var _Char___init__impl__6a9atx = kotlin_kotlin.$_$.u2;
  var mapCapacity = kotlin_kotlin.$_$.k8;
  var coerceAtLeast = kotlin_kotlin.$_$.hd;
  var LinkedHashMap_init_$Create$_0 = kotlin_kotlin.$_$.u;
  var to = kotlin_kotlin.$_$.mj;
  var KProperty0 = kotlin_kotlin.$_$.sd;
  var lazy = kotlin_kotlin.$_$.ej;
  var asSequence = kotlin_kotlin.$_$.h6;
  var filter = kotlin_kotlin.$_$.zd;
  var flatMap = kotlin_kotlin.$_$.be;
  var mapNotNull = kotlin_kotlin.$_$.ee;
  var map = kotlin_kotlin.$_$.fe;
  var toList = kotlin_kotlin.$_$.le;
  var Triple = kotlin_kotlin.$_$.ii;
  var ArrayList_init_$Create$_1 = kotlin_kotlin.$_$.n;
  var HashMap_init_$Create$_0 = kotlin_kotlin.$_$.q;
  var Collection = kotlin_kotlin.$_$.p5;
  var getOrNull = kotlin_kotlin.$_$.s7;
  //endregion
  //region block: pre-declaration
  setMetadataFor(DIDefining, 'DIDefining', classMeta);
  setMetadataFor(DIDefinition, 'DIDefinition', classMeta, DIDefining);
  setMetadataFor(NonCached, 'NonCached', objectMeta);
  setMetadataFor(ImplWithScope, 'ImplWithScope', classMeta);
  setMetadataFor(DependencyLoopException, 'DependencyLoopException', classMeta, RuntimeException);
  setMetadataFor(NotFoundException, 'NotFoundException', classMeta, RuntimeException);
  setMetadataFor(OverridingException, 'OverridingException', classMeta, RuntimeException);
  setMetadataFor(Key, 'Key', classMeta);
  function constant$default(tag, overrides, $super) {
    overrides = overrides === VOID ? null : overrides;
    return $super === VOID ? this.u5c(tag, overrides) : $super.u5c.call(this, tag, overrides);
  }
  function import$default(module_0, allowOverride, $super) {
    allowOverride = allowOverride === VOID ? false : allowOverride;
    var tmp;
    if ($super === VOID) {
      this.w5c(module_0, allowOverride);
      tmp = Unit_instance;
    } else {
      tmp = $super.w5c.call(this, module_0, allowOverride);
    }
    return tmp;
  }
  setMetadataFor(Builder, 'Builder', interfaceMeta);
  function extend$default(di, allowOverride, copy, $super) {
    allowOverride = allowOverride === VOID ? false : allowOverride;
    copy = copy === VOID ? NonCached_instance : copy;
    var tmp;
    if ($super === VOID) {
      this.z5c(di, allowOverride, copy);
      tmp = Unit_instance;
    } else {
      tmp = $super.z5c.call(this, di, allowOverride, copy);
    }
    return tmp;
  }
  setMetadataFor(MainBuilder, 'MainBuilder', interfaceMeta, VOID, [Builder]);
  setMetadataFor(Module, 'Module', classMeta);
  setMetadataFor(Companion, 'Companion', objectMeta);
  function get_diContext() {
    return get_AnyDIContext();
  }
  function get_diTrigger() {
    return null;
  }
  setMetadataFor(DIAware, 'DIAware', interfaceMeta);
  function get_di() {
    return this;
  }
  setMetadataFor(DI, 'DI', interfaceMeta, VOID, [DIAware]);
  setMetadataFor(DIContext, 'DIContext', interfaceMeta);
  setMetadataFor(Value, 'Value', classMeta, VOID, [DIContext]);
  setMetadataFor(Companion_0, 'Companion', objectMeta);
  setMetadataFor(DIWrapper, 'DIWrapper', classMeta, VOID, [DI]);
  setMetadataFor(Contexes, 'Contexes', objectMeta);
  function factory$default(key, context, overrideLevel, $super) {
    overrideLevel = overrideLevel === VOID ? 0 : overrideLevel;
    return $super === VOID ? this.u5d(key, context, overrideLevel) : $super.u5d.call(this, key, context, overrideLevel);
  }
  function factoryOrNull$default(key, context, overrideLevel, $super) {
    overrideLevel = overrideLevel === VOID ? 0 : overrideLevel;
    return $super === VOID ? this.w5d(key, context, overrideLevel) : $super.w5d.call(this, key, context, overrideLevel);
  }
  function provider(key, context, overrideLevel) {
    // Inline function 'org.kodein.di.toProvider' call
    var this_0 = this.v5d(key, context);
    return DIContainer$provider$lambda(this_0);
  }
  function provider$default(key, context, overrideLevel, $super) {
    overrideLevel = overrideLevel === VOID ? 0 : overrideLevel;
    return $super === VOID ? this.y5d(key, context, overrideLevel) : provider(key, context, overrideLevel);
  }
  function providerOrNull(key, context, overrideLevel) {
    var tmp0_safe_receiver = this.x5d(key, context);
    var tmp;
    if (tmp0_safe_receiver == null) {
      tmp = null;
    } else {
      // Inline function 'org.kodein.di.toProvider' call
      tmp = DIContainer$providerOrNull$lambda(tmp0_safe_receiver);
    }
    return tmp;
  }
  function providerOrNull$default(key, context, overrideLevel, $super) {
    overrideLevel = overrideLevel === VOID ? 0 : overrideLevel;
    return $super === VOID ? this.z5d(key, context, overrideLevel) : providerOrNull(key, context, overrideLevel);
  }
  setMetadataFor(DIContainer, 'DIContainer', interfaceMeta);
  function find$default(key, overrideLevel, all, $super) {
    overrideLevel = overrideLevel === VOID ? 0 : overrideLevel;
    all = all === VOID ? false : all;
    return $super === VOID ? this.c5e(key, overrideLevel, all) : $super.c5e.call(this, key, overrideLevel, all);
  }
  setMetadataFor(DITree, 'DITree', interfaceMeta);
  function get_di_0() {
    return this.g5e();
  }
  setMetadataFor(DirectDIBase, 'DirectDIBase', interfaceMeta);
  setMetadataFor(NoDefinedTag, 'NoDefinedTag', objectMeta);
  setMetadataFor(SearchSpecs, 'SearchSpecs', classMeta, VOID, VOID, SearchSpecs);
  setMetadataFor(NoArgBindingDIWrap, 'NoArgBindingDIWrap', classMeta, VOID, [DirectDIBase]);
  setMetadataFor(ErasedContext, 'ErasedContext', objectMeta, VOID, [DIContext]);
  setMetadataFor(DIBinding$Copier$Companion$invoke$1, VOID, classMeta);
  setMetadataFor(Companion_1, 'Companion', objectMeta);
  function factoryFullName() {
    return this.t5e();
  }
  function get_scope() {
    return null;
  }
  function get_description() {
    var arg = !equals(this.v5e(), Companion_getInstance().v5a_1) ? this.v5e().x5a() + ' -> ' : '';
    var tmp;
    var tmp_0 = this.h5c();
    if (tmp_0 instanceof NoScope) {
      tmp = null;
    } else {
      tmp = this.h5c();
    }
    var scope = tmp;
    var tmp_1;
    if (scope == null) {
      tmp_1 = null;
    } else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'org.kodein.di.bindings.DIBinding.<get-description>.<anonymous>' call
      tmp_1 = 'scoped(' + erasedOf(scope).x5a() + ').';
    }
    var tmp1_elvis_lhs = tmp_1;
    var context = tmp1_elvis_lhs == null ? !equals(this.g5c(), Companion_getInstance().w5a_1) ? 'contexted<' + this.g5c().x5a() + '>().' : '' : tmp1_elvis_lhs;
    return context + this.t5e() + ' { ' + arg + this.w5e().x5a() + ' }';
  }
  function get_fullDescription() {
    var arg = !equals(this.v5e(), Companion_getInstance().v5a_1) ? this.v5e().z5a() + ' -> ' : '';
    var tmp;
    var tmp_0 = this.h5c();
    if (tmp_0 instanceof NoScope) {
      tmp = null;
    } else {
      tmp = this.h5c();
    }
    var scope = tmp;
    var tmp_1;
    if (scope == null) {
      tmp_1 = null;
    } else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'org.kodein.di.bindings.DIBinding.<get-fullDescription>.<anonymous>' call
      tmp_1 = 'scoped(' + erasedOf(scope).z5a() + ').';
    }
    var tmp1_elvis_lhs = tmp_1;
    var context = tmp1_elvis_lhs == null ? !equals(this.g5c(), Companion_getInstance().w5a_1) ? 'contexted<' + this.g5c().z5a() + '>().' : '' : tmp1_elvis_lhs;
    return context + this.u5e() + ' { ' + arg + this.w5e().z5a() + ' }';
  }
  function get_copier() {
    return null;
  }
  function get_supportSubTypes() {
    return false;
  }
  setMetadataFor(DIBinding, 'DIBinding', interfaceMeta);
  function get_argType() {
    return Companion_getInstance().v5a_1;
  }
  setMetadataFor(NoArgDIBinding, 'NoArgDIBinding', interfaceMeta, VOID, [DIBinding]);
  setMetadataFor(SingletonReference, 'SingletonReference', objectMeta);
  setMetadataFor(Reference, 'Reference', classMeta);
  setMetadataFor(ScopeRegistry, 'ScopeRegistry', classMeta);
  setMetadataFor(StandardScopeRegistry, 'StandardScopeRegistry', classMeta, ScopeRegistry, VOID, StandardScopeRegistry);
  setMetadataFor(ContextTranslator, 'ContextTranslator', interfaceMeta);
  setMetadataFor(SimpleContextTranslator, 'SimpleContextTranslator', classMeta, VOID, [ContextTranslator]);
  setMetadataFor(NoScope, 'NoScope', classMeta, VOID, VOID, NoScope);
  setMetadataFor(CompositeContextTranslator, 'CompositeContextTranslator', classMeta, VOID, [ContextTranslator]);
  setMetadataFor(Singleton, 'Singleton', classMeta, VOID, [NoArgDIBinding]);
  setMetadataFor(Provider, 'Provider', classMeta, VOID, [NoArgDIBinding]);
  setMetadataFor(ScopeKey, 'ScopeKey', classMeta);
  setMetadataFor(InstanceBinding, 'InstanceBinding', classMeta, VOID, [NoArgDIBinding]);
  setMetadataFor(DIBuilderImpl, 'DIBuilderImpl', classMeta, VOID, [Builder]);
  setMetadataFor(DIMainBuilderImpl, 'DIMainBuilderImpl', classMeta, DIBuilderImpl, [DIBuilderImpl, MainBuilder]);
  setMetadataFor(TypeBinder, 'TypeBinder', classMeta);
  setMetadataFor(ConstantBinder, 'ConstantBinder', classMeta);
  setMetadataFor(OverrideMode, 'OverrideMode', classMeta, Enum);
  setMetadataFor(DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT, 'ALLOW_SILENT', classMeta, OverrideMode);
  setMetadataFor(DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT, 'ALLOW_EXPLICIT', classMeta, OverrideMode);
  setMetadataFor(DIContainerBuilderImpl$OverrideMode$FORBID, 'FORBID', classMeta, OverrideMode);
  setMetadataFor(Companion_2, 'Companion', objectMeta);
  setMetadataFor(DIContainerBuilderImpl, 'DIContainerBuilderImpl', classMeta);
  setMetadataFor(Node, 'Node', classMeta);
  setMetadataFor(DIContainerImpl, 'DIContainerImpl', classMeta, VOID, [DIContainer]);
  setMetadataFor(Companion_3, 'Companion', objectMeta);
  setMetadataFor(DIImpl, 'DIImpl', classMeta, VOID, [DI]);
  setMetadataFor(BindingDIImpl, 'BindingDIImpl', classMeta, VOID, [DirectDIBase]);
  setMetadataFor(DITreeImpl, 'DITreeImpl', classMeta, VOID, [DITree]);
  setMetadataFor(TypeChecker, 'TypeChecker', classMeta);
  setMetadataFor(Down, 'Down', classMeta, TypeChecker);
  setMetadataFor(Up, 'Up', classMeta, TypeChecker);
  setMetadataFor(DirectDIBaseImpl, 'DirectDIBaseImpl', classMeta, VOID, [DirectDIBase]);
  setMetadataFor(DIProperty, 'DIProperty', classMeta);
  setMetadataFor(DirectDIImpl, 'DirectDIImpl', classMeta, DirectDIBaseImpl, [DirectDIBaseImpl, DirectDIBase]);
  //endregion
  function DIDefinition(binding, fromModule, tree) {
    DIDefining.call(this, binding, fromModule);
    this.p5b_1 = tree;
  }
  function description(_this__u8e3s4, withOverrides, ident) {
    withOverrides = withOverrides === VOID ? false : withOverrides;
    ident = ident === VOID ? 8 : ident;
    return descriptionImpl(_this__u8e3s4, withOverrides, ident, bindDescription$factory(), description$factory());
  }
  function DIDefining(binding, fromModule) {
    this.q5b_1 = binding;
    this.r5b_1 = fromModule;
  }
  function descriptionImpl(_this__u8e3s4, withOverrides, ident, keyBindDisp, bindingDisp) {
    // Inline function 'kotlin.collections.groupBy' call
    // Inline function 'kotlin.collections.groupByTo' call
    var this_0 = _this__u8e3s4.q2();
    var destination = LinkedHashMap_init_$Create$();
    var tmp0_iterator = this_0.w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.descriptionImpl.<anonymous>' call
      var key = first(element.t2()).r5b_1;
      // Inline function 'kotlin.collections.getOrPut' call
      var value = destination.q(key);
      var tmp;
      if (value == null) {
        // Inline function 'kotlin.collections.groupByTo.<anonymous>' call
        var answer = ArrayList_init_$Create$();
        destination.s(key, answer);
        tmp = answer;
      } else {
        tmp = value;
      }
      var list = tmp;
      list.i1(element);
    }
    var byModule = destination;
    var modules = sorted(filterNotNull(byModule.o2()));
    // Inline function 'kotlin.text.buildString' call
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlin.apply' call
    var this_1 = StringBuilder_init_$Create$();
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'org.kodein.di.descriptionImpl.<anonymous>' call
    var tmp0_safe_receiver = byModule.q(null);
    if (tmp0_safe_receiver == null)
      null;
    else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      descriptionImpl$appendBindings(this_1, keyBindDisp, bindingDisp, withOverrides, ident, tmp0_safe_receiver);
    }
    // Inline function 'kotlin.collections.forEach' call
    var tmp0_iterator_0 = modules.w();
    while (tmp0_iterator_0.f()) {
      var element_0 = tmp0_iterator_0.e();
      // Inline function 'org.kodein.di.descriptionImpl.<anonymous>.<anonymous>' call
      this_1.y5(repeat(' ', ident) + 'module ' + element_0 + ' {\n');
      descriptionImpl$appendBindings(this_1, keyBindDisp, bindingDisp, withOverrides, ident + 4 | 0, ensureNotNull(byModule.q(element_0)));
      this_1.y5(repeat(' ', ident) + '}\n');
    }
    return this_1.toString();
  }
  function fullDescription(_this__u8e3s4, withOverrides, ident) {
    withOverrides = withOverrides === VOID ? false : withOverrides;
    ident = ident === VOID ? 8 : ident;
    return descriptionImpl(_this__u8e3s4, withOverrides, ident, bindFullDescription$factory(), fullDescription$factory());
  }
  function descriptionImpl$appendBindings(_this__u8e3s4, $keyBindDisp, $bindingDisp, $withOverrides, ident, entries) {
    var tmp0_iterator = entries.w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.descriptionImpl.appendBindings.<anonymous>' call
      var keyDescription = $keyBindDisp(element.s2());
      _this__u8e3s4.y5(repeat(' ', ident) + keyDescription + ' { ' + $bindingDisp(first(element.t2()).q5b_1) + ' }');
      if ($withOverrides) {
        var subIdent = keyDescription.length - 4 | 0;
        // Inline function 'kotlin.collections.forEach' call
        var tmp0_iterator_0 = element.t2().z(1, element.t2().u()).w();
        while (tmp0_iterator_0.f()) {
          var element_0 = tmp0_iterator_0.e();
          // Inline function 'org.kodein.di.descriptionImpl.appendBindings.<anonymous>.<anonymous>' call
          _this__u8e3s4.y5(repeat(' ', subIdent) + 'overrides ' + $bindingDisp(element_0.q5b_1));
        }
      }
      _this__u8e3s4.y5('\n');
    }
    return Unit_instance;
  }
  function bindDescription$factory() {
    return getPropertyCallableRef('bindDescription', 1, KProperty1, function (receiver) {
      return receiver.x5b();
    }, null);
  }
  function description$factory() {
    return getPropertyCallableRef('description', 1, KProperty1, function (receiver) {
      return receiver.y5b();
    }, null);
  }
  function bindFullDescription$factory() {
    return getPropertyCallableRef('bindFullDescription', 1, KProperty1, function (receiver) {
      return receiver.z5b();
    }, null);
  }
  function fullDescription$factory() {
    return getPropertyCallableRef('fullDescription', 1, KProperty1, function (receiver) {
      return receiver.a5c();
    }, null);
  }
  function NonCached() {
  }
  protoOf(NonCached).b5c = function (tree) {
    // Inline function 'kotlin.collections.filter' call
    // Inline function 'kotlin.collections.filterTo' call
    var this_0 = tree.c5c();
    var destination = LinkedHashMap_init_$Create$();
    // Inline function 'kotlin.collections.iterator' call
    var tmp0_iterator = this_0.q2().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.NonCached.keySet.<anonymous>' call
      if (first(element.t2()).q5b_1.d5c() == null) {
        destination.s(element.s2(), element.t2());
      }
    }
    return destination.o2();
  };
  var NonCached_instance;
  function NonCached_getInstance() {
    return NonCached_instance;
  }
  function appendDescription(_this__u8e3s4, $this, displayString) {
    if (!($this.v5b_1 == null)) {
      _this__u8e3s4.y5(' tagged "' + toString($this.v5b_1) + '"');
    }
    if (!equals($this.s5b_1, Companion_getInstance().w5a_1)) {
      _this__u8e3s4.y5(' on context ' + displayString($this.s5b_1));
    }
    if (!equals($this.t5b_1, Companion_getInstance().v5a_1)) {
      _this__u8e3s4.y5(', with argument ' + displayString($this.t5b_1));
    }
  }
  function TypeToken$simpleDispString$ref() {
    var l = function (p0) {
      return p0.x5a();
    };
    l.callableName = 'simpleDispString';
    return l;
  }
  function TypeToken$qualifiedDispString$ref() {
    var l = function (p0) {
      return p0.z5a();
    };
    l.callableName = 'qualifiedDispString';
    return l;
  }
  function ImplWithScope(contextType, scope) {
    this.e5c_1 = contextType;
    this.f5c_1 = scope;
  }
  protoOf(ImplWithScope).g5c = function () {
    return this.e5c_1;
  };
  protoOf(ImplWithScope).h5c = function () {
    return this.f5c_1;
  };
  protoOf(ImplWithScope).i5c = function () {
    return true;
  };
  function Module_init_$Init$(name, allowSilentOverride, prefix, init, $this) {
    allowSilentOverride = allowSilentOverride === VOID ? false : allowSilentOverride;
    prefix = prefix === VOID ? '' : prefix;
    Module.call($this, allowSilentOverride, prefix, init);
    $this.m5c_1 = name;
    return $this;
  }
  function Module_init_$Create$(name, allowSilentOverride, prefix, init) {
    return Module_init_$Init$(name, allowSilentOverride, prefix, init, objectCreate(protoOf(Module)));
  }
  function DependencyLoopException(message) {
    RuntimeException_init_$Init$(message, this);
    captureStack(this, DependencyLoopException);
  }
  function NotFoundException(key, message) {
    RuntimeException_init_$Init$(message, this);
    captureStack(this, NotFoundException);
    this.n5c_1 = key;
  }
  function OverridingException(message) {
    RuntimeException_init_$Init$(message, this);
    captureStack(this, OverridingException);
  }
  function Key(contextType, argType, type, tag) {
    this.s5b_1 = contextType;
    this.t5b_1 = argType;
    this.u5b_1 = type;
    this.v5b_1 = tag;
    this.w5b_1 = 0;
  }
  protoOf(Key).hashCode = function () {
    if (this.w5b_1 === 0) {
      this.w5b_1 = hashCode(this.s5b_1);
      this.w5b_1 = imul(31, this.w5b_1) + hashCode(this.t5b_1) | 0;
      this.w5b_1 = imul(29, hashCode(this.u5b_1));
      var tmp = this;
      var tmp_0 = imul(23, this.w5b_1);
      var tmp0_safe_receiver = this.v5b_1;
      var tmp1_elvis_lhs = tmp0_safe_receiver == null ? null : hashCode(tmp0_safe_receiver);
      tmp.w5b_1 = tmp_0 + (tmp1_elvis_lhs == null ? 0 : tmp1_elvis_lhs) | 0;
    }
    return this.w5b_1;
  };
  protoOf(Key).toString = function () {
    return this.y5b();
  };
  protoOf(Key).x5b = 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 'org.kodein.di.Key.<get-bindDescription>.<anonymous>' call
    this_0.y5('bind<' + this.u5b_1.x5a() + '>');
    if (!(this.v5b_1 == null)) {
      this_0.y5('(tag = "' + toString(this.v5b_1) + '")');
    }
    return this_0.toString();
  };
  protoOf(Key).z5b = 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 'org.kodein.di.Key.<get-bindFullDescription>.<anonymous>' call
    this_0.y5('bind<' + this.u5b_1.z5a() + '>');
    if (!(this.v5b_1 == null)) {
      this_0.y5('(tag = "' + toString(this.v5b_1) + '")');
    }
    return this_0.toString();
  };
  protoOf(Key).y5b = 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 'org.kodein.di.Key.<get-description>.<anonymous>' call
    this_0.y5(this.u5b_1.x5a());
    appendDescription(this_0, this, TypeToken$simpleDispString$ref());
    return this_0.toString();
  };
  protoOf(Key).o5c = function () {
    return '(context: ' + this.s5b_1.x5a() + ', arg: ' + this.t5b_1.x5a() + ', type: ' + this.u5b_1.x5a() + ', tag: ' + toString(this.v5b_1) + ')';
  };
  protoOf(Key).a5c = 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 'org.kodein.di.Key.<get-fullDescription>.<anonymous>' call
    this_0.y5(this.u5b_1.z5a());
    appendDescription(this_0, this, TypeToken$qualifiedDispString$ref());
    return this_0.toString();
  };
  protoOf(Key).p5c = function (contextType, argType, type, tag) {
    return new Key(contextType, argType, type, tag);
  };
  protoOf(Key).q5c = function (contextType, argType, type, tag, $super) {
    contextType = contextType === VOID ? this.s5b_1 : contextType;
    argType = argType === VOID ? this.t5b_1 : argType;
    type = type === VOID ? this.u5b_1 : type;
    tag = tag === VOID ? this.v5b_1 : tag;
    return $super === VOID ? this.p5c(contextType, argType, type, tag) : $super.p5c.call(this, contextType, argType, type, tag);
  };
  protoOf(Key).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Key))
      return false;
    var tmp0_other_with_cast = other instanceof Key ? other : THROW_CCE();
    if (!equals(this.s5b_1, tmp0_other_with_cast.s5b_1))
      return false;
    if (!equals(this.t5b_1, tmp0_other_with_cast.t5b_1))
      return false;
    if (!equals(this.u5b_1, tmp0_other_with_cast.u5b_1))
      return false;
    if (!equals(this.v5b_1, tmp0_other_with_cast.v5b_1))
      return false;
    return true;
  };
  function Builder() {
  }
  function MainBuilder() {
  }
  function Module(allowSilentOverride, prefix, init) {
    allowSilentOverride = allowSilentOverride === VOID ? false : allowSilentOverride;
    prefix = prefix === VOID ? '' : prefix;
    this.j5c_1 = allowSilentOverride;
    this.k5c_1 = prefix;
    this.l5c_1 = init;
    this.m5c_1 = null;
  }
  protoOf(Module).dc = function () {
    var tmp0_elvis_lhs = this.m5c_1;
    var tmp;
    if (tmp0_elvis_lhs == null) {
      throw IllegalStateException_init_$Create$('module must have a name.');
    } else {
      tmp = tmp0_elvis_lhs;
    }
    return tmp;
  };
  protoOf(Module).toString = function () {
    return 'Module(allowSilentOverride=' + this.j5c_1 + ', prefix=' + this.k5c_1 + ', init=' + this.l5c_1 + ')';
  };
  protoOf(Module).hashCode = function () {
    var result = getBooleanHashCode(this.j5c_1);
    result = imul(result, 31) + getStringHashCode(this.k5c_1) | 0;
    result = imul(result, 31) + hashCode(this.l5c_1) | 0;
    return result;
  };
  protoOf(Module).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Module))
      return false;
    var tmp0_other_with_cast = other instanceof Module ? other : THROW_CCE();
    if (!(this.j5c_1 === tmp0_other_with_cast.j5c_1))
      return false;
    if (!(this.k5c_1 === tmp0_other_with_cast.k5c_1))
      return false;
    if (!equals(this.l5c_1, tmp0_other_with_cast.l5c_1))
      return false;
    return true;
  };
  function Companion() {
    this.b5d_1 = false;
    this.c5d_1 = false;
  }
  protoOf(Companion).d5d = function (allowSilentOverride, init) {
    return DIImpl_init_$Create$(allowSilentOverride, init);
  };
  protoOf(Companion).e5d = function (allowSilentOverride, init, $super) {
    allowSilentOverride = allowSilentOverride === VOID ? false : allowSilentOverride;
    return $super === VOID ? this.d5d(allowSilentOverride, init) : $super.d5d.call(this, allowSilentOverride, init);
  };
  var Companion_instance;
  function Companion_getInstance_0() {
    return Companion_instance;
  }
  function DI() {
  }
  function get_direct(_this__u8e3s4) {
    return new DirectDIImpl(_this__u8e3s4.f5d().g5d(), _this__u8e3s4.h5d());
  }
  function DIAware() {
  }
  function Instance(_this__u8e3s4, type, tag) {
    tag = tag === VOID ? null : tag;
    var tmp = _this__u8e3s4.i5d();
    var tmp_0 = _this__u8e3s4.h5d();
    return new DIProperty(tmp, tmp_0, Instance$lambda(_this__u8e3s4, type, tag));
  }
  function Value(type, value) {
    this.j5d_1 = type;
    this.k5d_1 = value;
  }
  protoOf(Value).l5d = function () {
    return this.j5d_1;
  };
  protoOf(Value).t2 = function () {
    return this.k5d_1;
  };
  protoOf(Value).toString = function () {
    return 'Value(type=' + this.j5d_1 + ', value=' + this.k5d_1 + ')';
  };
  protoOf(Value).hashCode = function () {
    var result = hashCode(this.j5d_1);
    result = imul(result, 31) + hashCode(this.k5d_1) | 0;
    return result;
  };
  protoOf(Value).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Value))
      return false;
    var tmp0_other_with_cast = other instanceof Value ? other : THROW_CCE();
    if (!equals(this.j5d_1, tmp0_other_with_cast.j5d_1))
      return false;
    if (!equals(this.k5d_1, tmp0_other_with_cast.k5d_1))
      return false;
    return true;
  };
  function Companion_0() {
  }
  protoOf(Companion_0).m5d = function (type, value) {
    return new Value(type, value);
  };
  var Companion_instance_0;
  function Companion_getInstance_1() {
    return Companion_instance_0;
  }
  function DIContext() {
  }
  function On(_this__u8e3s4, context, trigger) {
    context = context === VOID ? _this__u8e3s4.h5d() : context;
    trigger = trigger === VOID ? _this__u8e3s4.i5d() : trigger;
    return DIWrapper_init_$Create$(_this__u8e3s4, context, trigger);
  }
  function InstanceOrNull(_this__u8e3s4, type, tag) {
    tag = tag === VOID ? null : tag;
    var tmp = _this__u8e3s4.i5d();
    var tmp_0 = _this__u8e3s4.h5d();
    return new DIProperty(tmp, tmp_0, InstanceOrNull$lambda(_this__u8e3s4, type, tag));
  }
  function get_AnyDIContext() {
    return Contexes_getInstance().n5d_1;
  }
  function DIWrapper_init_$Init$(base, diContext, trigger, $this) {
    diContext = diContext === VOID ? base.h5d() : diContext;
    trigger = trigger === VOID ? base.i5d() : trigger;
    DIWrapper.call($this, base.f5d(), diContext, trigger);
    return $this;
  }
  function DIWrapper_init_$Create$(base, diContext, trigger) {
    return DIWrapper_init_$Init$(base, diContext, trigger, objectCreate(protoOf(DIWrapper)));
  }
  function DIWrapper(_base, diContext, diTrigger) {
    diTrigger = diTrigger === VOID ? null : diTrigger;
    this.o5d_1 = _base;
    this.p5d_1 = diContext;
    this.q5d_1 = diTrigger;
  }
  protoOf(DIWrapper).h5d = function () {
    return this.p5d_1;
  };
  protoOf(DIWrapper).i5d = function () {
    return this.q5d_1;
  };
  protoOf(DIWrapper).f5d = function () {
    return this;
  };
  protoOf(DIWrapper).g5d = function () {
    return this.o5d_1.g5d();
  };
  function Contexes() {
    Contexes_instance = this;
    this.n5d_1 = Companion_instance_0.m5d(Companion_getInstance().w5a_1, new Object());
  }
  var Contexes_instance;
  function Contexes_getInstance() {
    if (Contexes_instance == null)
      new Contexes();
    return Contexes_instance;
  }
  function Instance$lambda($this_Instance, $type, $tag) {
    return function (ctx, _anonymous_parameter_1__qggqgd) {
      var tmp = $this_Instance.f5d().g5d();
      // Inline function 'org.kodein.di.anyType' call
      var tmp_0 = ctx.l5d();
      var tmp$ret$0 = isInterface(tmp_0, TypeToken) ? tmp_0 : THROW_CCE();
      return tmp.r5d(new Key(tmp$ret$0, Companion_getInstance().v5a_1, $type, $tag), ctx.t2())();
    };
  }
  function InstanceOrNull$lambda($this_InstanceOrNull, $type, $tag) {
    return function (ctx, _anonymous_parameter_1__qggqgd) {
      var tmp = $this_InstanceOrNull.f5d().g5d();
      // Inline function 'org.kodein.di.anyType' call
      var tmp_0 = ctx.l5d();
      var tmp$ret$0 = isInterface(tmp_0, TypeToken) ? tmp_0 : THROW_CCE();
      var tmp0_safe_receiver = tmp.s5d(new Key(tmp$ret$0, Companion_getInstance().v5a_1, $type, $tag), ctx.t2());
      return tmp0_safe_receiver == null ? null : tmp0_safe_receiver();
    };
  }
  function DIContainer$provider$lambda($this) {
    return function () {
      return $this(Unit_instance);
    };
  }
  function DIContainer$providerOrNull$lambda($this) {
    return function () {
      return $this(Unit_instance);
    };
  }
  function DIContainer() {
  }
  function DITree() {
  }
  function DirectDIBase() {
  }
  function NoDefinedTag() {
  }
  var NoDefinedTag_instance;
  function NoDefinedTag_getInstance() {
    return NoDefinedTag_instance;
  }
  function SearchSpecs(contextType, argType, type, tag) {
    contextType = contextType === VOID ? null : contextType;
    argType = argType === VOID ? null : argType;
    type = type === VOID ? null : type;
    tag = tag === VOID ? NoDefinedTag_instance : tag;
    this.l5e_1 = contextType;
    this.m5e_1 = argType;
    this.n5e_1 = type;
    this.o5e_1 = tag;
  }
  protoOf(SearchSpecs).toString = function () {
    var args = ArrayList_init_$Create$();
    if (!(this.l5e_1 == null)) {
      // Inline function 'kotlin.collections.plusAssign' call
      var tmp0_safe_receiver = this.l5e_1;
      var element = 'contextType=' + (tmp0_safe_receiver == null ? null : tmp0_safe_receiver.x5a());
      args.i1(element);
    }
    if (!(this.m5e_1 == null)) {
      // Inline function 'kotlin.collections.plusAssign' call
      var tmp1_safe_receiver = this.m5e_1;
      var element_0 = 'argType=' + (tmp1_safe_receiver == null ? null : tmp1_safe_receiver.x5a());
      args.i1(element_0);
    }
    if (!(this.n5e_1 == null)) {
      // Inline function 'kotlin.collections.plusAssign' call
      var tmp2_safe_receiver = this.n5e_1;
      var element_1 = 'type=' + (tmp2_safe_receiver == null ? null : tmp2_safe_receiver.x5a());
      args.i1(element_1);
    }
    if (!equals(this.o5e_1, NoDefinedTag_instance)) {
      // Inline function 'kotlin.collections.plusAssign' call
      var element_2 = 'tag=' + toString(this.o5e_1);
      args.i1(element_2);
    }
    return '[' + joinToString(args, ', ') + ']';
  };
  function NoArgBindingDIWrap(_di) {
    this.p5e_1 = _di;
  }
  protoOf(NoArgBindingDIWrap).f5d = function () {
    return this.p5e_1.f5d();
  };
  protoOf(NoArgBindingDIWrap).k5e = function () {
    return this.p5e_1.k5e();
  };
  protoOf(NoArgBindingDIWrap).g5e = function () {
    return this.p5e_1.g5e();
  };
  protoOf(NoArgBindingDIWrap).i5e = function (type, tag) {
    return this.p5e_1.i5e(type, tag);
  };
  protoOf(NoArgBindingDIWrap).j5e = function (type, tag) {
    return this.p5e_1.j5e(type, tag);
  };
  protoOf(NoArgBindingDIWrap).h5e = function (context) {
    return this.p5e_1.h5e(context);
  };
  protoOf(NoArgBindingDIWrap).od = function () {
    return this.p5e_1.od();
  };
  function ErasedContext() {
  }
  protoOf(ErasedContext).l5d = function () {
    return Companion_getInstance().w5a_1;
  };
  protoOf(ErasedContext).t2 = function () {
    return ErasedContext_instance;
  };
  var ErasedContext_instance;
  function ErasedContext_getInstance() {
    return ErasedContext_instance;
  }
  function DIBinding$Copier$Companion$invoke$1($f) {
    this.q5e_1 = $f;
  }
  protoOf(DIBinding$Copier$Companion$invoke$1).r5e = function (builder) {
    return this.q5e_1(builder);
  };
  function Companion_1() {
  }
  protoOf(Companion_1).s5e = function (f) {
    return new DIBinding$Copier$Companion$invoke$1(f);
  };
  var Companion_instance_1;
  function Companion_getInstance_2() {
    return Companion_instance_1;
  }
  function DIBinding() {
  }
  function NoArgDIBinding() {
  }
  function SingletonReference$make$lambda($value) {
    return function () {
      return $value;
    };
  }
  function SingletonReference() {
  }
  protoOf(SingletonReference).z5e = function (creator) {
    var value = creator();
    return new Reference(value, SingletonReference$make$lambda(value));
  };
  var SingletonReference_instance;
  function SingletonReference_getInstance() {
    return SingletonReference_instance;
  }
  function Reference(current, next) {
    this.a5f_1 = current;
    this.b5f_1 = next;
  }
  protoOf(Reference).y6 = function () {
    return this.a5f_1;
  };
  protoOf(Reference).z6 = function () {
    return this.b5f_1;
  };
  protoOf(Reference).toString = function () {
    return 'Reference(current=' + this.a5f_1 + ', next=' + this.b5f_1 + ')';
  };
  protoOf(Reference).hashCode = function () {
    var result = hashCode(this.a5f_1);
    result = imul(result, 31) + hashCode(this.b5f_1) | 0;
    return result;
  };
  protoOf(Reference).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Reference))
      return false;
    var tmp0_other_with_cast = other instanceof Reference ? other : THROW_CCE();
    if (!equals(this.a5f_1, tmp0_other_with_cast.a5f_1))
      return false;
    if (!equals(this.b5f_1, tmp0_other_with_cast.b5f_1))
      return false;
    return true;
  };
  function ScopeRegistry() {
  }
  function StandardScopeRegistry() {
    ScopeRegistry.call(this);
    this.d5f_1 = newConcurrentMap();
    this.e5f_1 = new Object();
  }
  protoOf(StandardScopeRegistry).c5f = function (key, sync, creator) {
    var tmp$ret$2;
    $l$block_1: {
      // Inline function 'org.kodein.di.internal.synchronizedIfNull' call
      sync && this.e5f_1;
      // Inline function 'org.kodein.di.bindings.StandardScopeRegistry.getOrCreate.<anonymous>' call
      var tmp0_safe_receiver = this.d5f_1.q(key);
      var tmp0_safe_receiver_0 = tmp0_safe_receiver == null ? null : tmp0_safe_receiver();
      if (tmp0_safe_receiver_0 == null)
        null;
      else {
        // Inline function 'kotlin.let' call
        // Inline function 'kotlin.contracts.contract' call
        // Inline function 'org.kodein.di.bindings.StandardScopeRegistry.getOrCreate.<anonymous>' call
        tmp$ret$2 = tmp0_safe_receiver_0;
        break $l$block_1;
      }
      // Inline function 'org.kodein.di.internal.maySynchronized' call
      var tmp$ret$5;
      $l$block_0: {
        // Inline function 'org.kodein.di.internal.synchronizedIfNull.<anonymous>' call
        // Inline function 'org.kodein.di.bindings.StandardScopeRegistry.getOrCreate.<anonymous>' call
        var tmp0_safe_receiver_1 = this.d5f_1.q(key);
        var tmp0_safe_receiver_2 = tmp0_safe_receiver_1 == null ? null : tmp0_safe_receiver_1();
        if (tmp0_safe_receiver_2 == null)
          null;
        else {
          // Inline function 'kotlin.let' call
          // Inline function 'kotlin.contracts.contract' call
          tmp$ret$5 = tmp0_safe_receiver_2;
          break $l$block_0;
        }
        // Inline function 'org.kodein.di.bindings.StandardScopeRegistry.getOrCreate.<anonymous>' call
        var tmp0_container = creator();
        var current = tmp0_container.y6();
        var next = tmp0_container.z6();
        // Inline function 'kotlin.collections.set' call
        this.d5f_1.s(key, next);
        tmp$ret$2 = current;
        break $l$block_1;
      }
      var value = tmp$ret$5;
      // Inline function 'org.kodein.di.bindings.StandardScopeRegistry.getOrCreate.<anonymous>' call
      tmp$ret$2 = value;
    }
    return tmp$ret$2;
  };
  function ContextTranslator() {
  }
  function SimpleContextTranslator(contextType, scopeType, t) {
    this.h5f_1 = contextType;
    this.i5f_1 = scopeType;
    this.j5f_1 = t;
  }
  protoOf(SimpleContextTranslator).g5c = function () {
    return this.h5f_1;
  };
  protoOf(SimpleContextTranslator).f5f = function () {
    return this.i5f_1;
  };
  protoOf(SimpleContextTranslator).g5f = function (di, ctx) {
    return this.j5f_1(di, ctx);
  };
  protoOf(SimpleContextTranslator).toString = function () {
    return '()';
  };
  function NoScope() {
    this.k5f_1 = new StandardScopeRegistry();
  }
  protoOf(NoScope).l5f = function (context) {
    return this.k5f_1;
  };
  protoOf(NoScope).m5f = function (context) {
    return this.l5f((context == null ? true : !(context == null)) ? context : THROW_CCE());
  };
  function toKContext(_this__u8e3s4, di, ctx) {
    var tmp0_safe_receiver = _this__u8e3s4.g5f(di, ctx);
    var tmp;
    if (tmp0_safe_receiver == null) {
      tmp = null;
    } else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'org.kodein.di.bindings.toKContext.<anonymous>' call
      tmp = Companion_instance_0.m5d(_this__u8e3s4.f5f(), tmp0_safe_receiver);
    }
    return tmp;
  }
  function CompositeContextTranslator(src, dst) {
    this.n5f_1 = src;
    this.o5f_1 = dst;
  }
  protoOf(CompositeContextTranslator).g5c = function () {
    return this.n5f_1.g5c();
  };
  protoOf(CompositeContextTranslator).f5f = function () {
    return this.o5f_1.f5f();
  };
  protoOf(CompositeContextTranslator).g5f = function (di, ctx) {
    var tmp0_safe_receiver = this.n5f_1.g5f(di, ctx);
    var tmp;
    if (tmp0_safe_receiver == null) {
      tmp = null;
    } else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'org.kodein.di.bindings.CompositeContextTranslator.translate.<anonymous>' call
      tmp = this.o5f_1.g5f(di, tmp0_safe_receiver);
    }
    return tmp;
  };
  protoOf(CompositeContextTranslator).toString = function () {
    return '(' + this.n5f_1 + ' -> ' + this.o5f_1 + ')';
  };
  function factoryName($this, params) {
    // 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 'org.kodein.di.bindings.Singleton.factoryName.<anonymous>' call
    this_0.y5('singleton');
    // Inline function 'kotlin.collections.isNotEmpty' call
    if (!params.c1()) {
      this_0.y5(joinToString(params, ', ', '(', ')'));
    }
    return this_0.toString();
  }
  function Singleton$getFactory$lambda$lambda$lambda(this$0, $bindingDi) {
    return function () {
      return this$0.u5f_1(new NoArgBindingDIWrap($bindingDi));
    };
  }
  function Singleton$getFactory$lambda$lambda(this$0, $bindingDi) {
    return function () {
      return this$0.v5f_1.z5e(Singleton$getFactory$lambda$lambda$lambda(this$0, $bindingDi));
    };
  }
  function Singleton$getFactory$lambda($lateInitRegistry, this$0, $bindingDi) {
    return function (_anonymous_parameter_0__qggqh8) {
      var tmp0_elvis_lhs = $lateInitRegistry._v;
      var tmp;
      if (tmp0_elvis_lhs == null) {
        // Inline function 'kotlin.also' call
        var this_0 = this$0.p5f_1.m5f($bindingDi.od());
        // Inline function 'kotlin.contracts.contract' call
        // Inline function 'org.kodein.di.bindings.Singleton.getFactory.<anonymous>.<anonymous>' call
        $lateInitRegistry._v = this_0;
        tmp = this_0;
      } else {
        tmp = tmp0_elvis_lhs;
      }
      var registry = tmp;
      var tmp_0 = registry.c5f(this$0.w5f_1, this$0.t5f_1, Singleton$getFactory$lambda$lambda(this$0, $bindingDi));
      return !(tmp_0 == null) ? tmp_0 : THROW_CCE();
    };
  }
  function Singleton$copier$lambda(this$0) {
    return function (it) {
      return new Singleton(this$0.p5f_1, this$0.q5f_1, this$0.r5f_1, this$0.s5f_1, this$0.v5f_1, this$0.t5f_1, this$0.u5f_1);
    };
  }
  function Singleton(scope, contextType, explicitContext, createdType, refMaker, sync, creator) {
    refMaker = refMaker === VOID ? null : refMaker;
    sync = sync === VOID ? true : sync;
    this.p5f_1 = scope;
    this.q5f_1 = contextType;
    this.r5f_1 = explicitContext;
    this.s5f_1 = createdType;
    this.t5f_1 = sync;
    this.u5f_1 = creator;
    var tmp = this;
    tmp.v5f_1 = refMaker == null ? SingletonReference_instance : refMaker;
    this.w5f_1 = new ScopeKey(new Object(), Unit_instance);
    var tmp_0 = this;
    var tmp_1 = Companion_instance_1;
    tmp_0.x5f_1 = tmp_1.s5e(Singleton$copier$lambda(this));
  }
  protoOf(Singleton).h5c = function () {
    return this.p5f_1;
  };
  protoOf(Singleton).g5c = function () {
    return this.q5f_1;
  };
  protoOf(Singleton).w5e = function () {
    return this.s5f_1;
  };
  protoOf(Singleton).t5e = function () {
    var params = ArrayList_init_$Create$_0(2);
    if (!equals(this.v5f_1, SingletonReference_instance)) {
      params.i1('ref = ' + erasedOf(this.v5f_1).x5a());
    }
    return factoryName(this, params);
  };
  protoOf(Singleton).u5e = function () {
    var params = ArrayList_init_$Create$_0(2);
    if (!equals(this.v5f_1, SingletonReference_instance)) {
      params.i1('ref = ' + erasedOf(this.v5f_1).z5a());
    }
    return factoryName(this, params);
  };
  protoOf(Singleton).y5f = function (key, di) {
    var lateInitRegistry = {_v: null};
    var bindingDi = this.r5f_1 ? di : di.z5f();
    return Singleton$getFactory$lambda(lateInitRegistry, this, bindingDi);
  };
  protoOf(Singleton).y5e = function (key, di) {
    return this.y5f(key, di);
  };
  protoOf(Singleton).d5c = function () {
    return this.x5f_1;
  };
  function Provider$getFactory$lambda(this$0, $di) {
    return function (_anonymous_parameter_0__qggqh8) {
      return this$0.c5g_1(new NoArgBindingDIWrap($di));
    };
  }
  function Provider(contextType, createdType, creator) {
    this.a5g_1 = contextType;
    this.b5g_1 = createdType;
    this.c5g_1 = creator;
  }
  protoOf(Provider).g5c = function () {
    return this.a5g_1;
  };
  protoOf(Provider).w5e = function () {
    return this.b5g_1;
  };
  protoOf(Provider).t5e = function () {
    return 'provider';
  };
  protoOf(Provider).y5f = function (key, di) {
    return Provider$getFactory$lambda(this, di);
  };
  protoOf(Provider).y5e = function (key, di) {
    return this.y5f(key, di);
  };
  function ScopeKey(scopeId, arg) {
    this.d5g_1 = scopeId;
    this.e5g_1 = arg;
  }
  protoOf(ScopeKey).toString = function () {
    return 'ScopeKey(scopeId=' + toString_0(this.d5g_1) + ', arg=' + this.e5g_1 + ')';
  };
  protoOf(ScopeKey).hashCode = function () {
    var result = hashCode(this.d5g_1);
    result = imul(result, 31) + (this.e5g_1 == null ? 0 : hashCode(this.e5g_1)) | 0;
    return result;
  };
  protoOf(ScopeKey).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof ScopeKey))
      return false;
    var tmp0_other_with_cast = other instanceof ScopeKey ? other : THROW_CCE();
    if (!equals(this.d5g_1, tmp0_other_with_cast.d5g_1))
      return false;
    if (!equals(this.e5g_1, tmp0_other_with_cast.e5g_1))
      return false;
    return true;
  };
  function InstanceBinding$getFactory$lambda(this$0) {
    return function (_anonymous_parameter_0__qggqh8) {
      return this$0.g5g_1;
    };
  }
  function InstanceBinding(createdType, instance) {
    this.f5g_1 = createdType;
    this.g5g_1 = instance;
    this.h5g_1 = Companion_getInstance().w5a_1;
  }
  protoOf(InstanceBinding).w5e = function () {
    return this.f5g_1;
  };
  protoOf(InstanceBinding).t5e = function () {
    return 'instance';
  };
  protoOf(InstanceBinding).g5c = function () {
    return this.h5g_1;
  };
  protoOf(InstanceBinding).i5g = function (key, di) {
    return InstanceBinding$getFactory$lambda(this);
  };
  protoOf(InstanceBinding).y5e = function (key, di) {
    return this.i5g(key, di);
  };
  protoOf(InstanceBinding).y5b = function () {
    return this.t5e() + ' ( ' + this.f5g_1.x5a() + ' )';
  };
  protoOf(InstanceBinding).a5c = function () {
    return this.u5e() + ' ( ' + this.f5g_1.z5a() + ' )';
  };
  function DIMainBuilderImpl(allowSilentOverride) {
    DIBuilderImpl.call(this, null, '', HashSet_init_$Create$(), new DIContainerBuilderImpl(true, allowSilentOverride, HashMap_init_$Create$(), ArrayList_init_$Create$(), ArrayList_init_$Create$()));
    this.o5g_1 = ArrayList_init_$Create$();
    this.p5g_1 = Companion_instance.b5d_1;
    this.q5g_1 = Companion_instance.c5d_1;
  }
  protoOf(DIMainBuilderImpl).b5e = function () {
    return this.o5g_1;
  };
  protoOf(DIMainBuilderImpl).r5g = function () {
    return this.p5g_1;
  };
  protoOf(DIMainBuilderImpl).s5g = function () {
    return this.q5g_1;
  };
  protoOf(DIMainBuilderImpl).z5c = function (di, allowOverride, copy) {
    var keys = copy.b5c(di.g5d().t5d());
    this.r5c().c5h(di.g5d(), allowOverride, keys);
    // Inline function 'kotlin.collections.plusAssign' call
    var this_0 = this.b5e();
    var elements = di.g5d().t5d().b5e();
    addAll(this_0, elements);
    // Inline function 'kotlin.collections.flatMap' call
    // Inline function 'kotlin.collections.flatMapTo' call
    var this_1 = this.r5c().y5g_1;
    var destination = ArrayList_init_$Create$();
    // Inline function 'kotlin.collections.iterator' call
    var tmp0_iterator = this_1.q2().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DIMainBuilderImpl.extend.<anonymous>' call
      // Inline function 'kotlin.collections.map' call
      var this_2 = element.t2();
      // Inline function 'kotlin.collections.mapTo' call
      var destination_0 = ArrayList_init_$Create$_0(collectionSizeOrDefault(this_2, 10));
      var tmp0_iterator_0 = this_2.w();
      while (tmp0_iterator_0.f()) {
        var item = tmp0_iterator_0.e();
        // Inline function 'org.kodein.di.internal.DIMainBuilderImpl.extend.<anonymous>.<anonymous>' call
        var tmp$ret$1 = item.r5b_1;
        destination_0.i1(tmp$ret$1);
      }
      var list = destination_0;
      addAll(destination, list);
    }
    this.v5g_1.m1(filterNotNull(destination));
  };
  function TypeBinder($outer, type, tag, overrides) {
    this.g5h_1 = $outer;
    this.d5h_1 = type;
    this.e5h_1 = tag;
    this.f5h_1 = overrides;
  }
  protoOf(TypeBinder).r5c = function () {
    return this.g5h_1.r5c();
  };
  protoOf(TypeBinder).h5h = function (binding) {
    return this.r5c().i5h(new Key(binding.g5c(), binding.v5e(), this.d5h_1, this.e5h_1), binding, this.g5h_1.t5g_1, this.f5h_1);
  };
  function ConstantBinder($outer, _tag, _overrides) {
    this.l5h_1 = $outer;
    this.j5h_1 = _tag;
    this.k5h_1 = _overrides;
  }
  protoOf(ConstantBinder).m5h = function (valueType, value) {
    return this.l5h_1.s5c(this.j5h_1, this.k5h_1, new InstanceBinding(valueType, value));
  };
  function DIBuilderImpl(moduleName, prefix, importedModules, containerBuilder) {
    this.t5g_1 = moduleName;
    this.u5g_1 = prefix;
    this.v5g_1 = importedModules;
    this.w5g_1 = containerBuilder;
    this.x5g_1 = Companion_getInstance().w5a_1;
  }
  protoOf(DIBuilderImpl).r5c = function () {
    return this.w5g_1;
  };
  protoOf(DIBuilderImpl).g5c = function () {
    return this.x5g_1;
  };
  protoOf(DIBuilderImpl).h5c = function () {
    return new NoScope();
  };
  protoOf(DIBuilderImpl).i5c = function () {
    return false;
  };
  protoOf(DIBuilderImpl).t5c = function (type, tag, overrides) {
    return new TypeBinder(this, type, tag, overrides);
  };
  protoOf(DIBuilderImpl).s5c = function (tag, overrides, binding) {
    this.r5c().i5h(new Key(binding.g5c(), binding.v5e(), binding.w5e(), tag), binding, this.t5g_1, overrides);
  };
  protoOf(DIBuilderImpl).u5c = function (tag, overrides) {
    return new ConstantBinder(this, tag, overrides);
  };
  protoOf(DIBuilderImpl).w5c = function (module_0, allowOverride) {
    var moduleName = this.u5g_1 + module_0.dc();
    var tmp;
    // Inline function 'kotlin.text.isNotEmpty' call
    if (charSequenceLength(moduleName) > 0) {
      tmp = this.v5g_1.a1(moduleName);
    } else {
      tmp = false;
    }
    if (tmp) {
      throw IllegalStateException_init_$Create$('Module "' + moduleName + '" has already been imported!');
    }
    // Inline function 'kotlin.collections.plusAssign' call
    this.v5g_1.i1(moduleName);
    // Inline function 'kotlin.apply' call
    var this_0 = new DIBuilderImpl(moduleName, this.u5g_1 + module_0.k5c_1, this.v5g_1, this.r5c().n5h(allowOverride, module_0.j5c_1));
    // Inline function 'kotlin.contracts.contract' call
    module_0.l5c_1(this_0);
  };
  protoOf(DIBuilderImpl).y5c = function (translator) {
    return this.r5c().o5h(translator);
  };
  function DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT() {
    OverrideMode.call(this, 'ALLOW_SILENT', 0);
    OverrideMode_ALLOW_SILENT_instance = this;
  }
  protoOf(DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT).r5h = function () {
    return true;
  };
  protoOf(DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT).s5h = function (overrides) {
    return overrides;
  };
  var OverrideMode_ALLOW_SILENT_instance;
  function DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT() {
    OverrideMode.call(this, 'ALLOW_EXPLICIT', 1);
    OverrideMode_ALLOW_EXPLICIT_instance = this;
  }
  protoOf(DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT).r5h = function () {
    return true;
  };
  protoOf(DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT).s5h = function (overrides) {
    return overrides == null ? false : overrides;
  };
  var OverrideMode_ALLOW_EXPLICIT_instance;
  function DIContainerBuilderImpl$OverrideMode$FORBID() {
    OverrideMode.call(this, 'FORBID', 2);
    OverrideMode_FORBID_instance = this;
  }
  protoOf(DIContainerBuilderImpl$OverrideMode$FORBID).r5h = function () {
    return false;
  };
  protoOf(DIContainerBuilderImpl$OverrideMode$FORBID).s5h = function (overrides) {
    var tmp;
    if (!(overrides == null) ? overrides : false) {
      throw new OverridingException('Overriding has been forbidden');
    } else {
      tmp = false;
    }
    return tmp;
  };
  var OverrideMode_FORBID_instance;
  function Companion_2() {
  }
  protoOf(Companion_2).x5h = function (allow, silent) {
    if (!allow)
      return OverrideMode_FORBID_getInstance();
    if (silent)
      return OverrideMode_ALLOW_SILENT_getInstance();
    return OverrideMode_ALLOW_EXPLICIT_getInstance();
  };
  var Companion_instance_2;
  function Companion_getInstance_3() {
    return Companion_instance_2;
  }
  var OverrideMode_entriesInitialized;
  function OverrideMode_initEntries() {
    if (OverrideMode_entriesInitialized)
      return Unit_instance;
    OverrideMode_entriesInitialized = true;
    OverrideMode_ALLOW_SILENT_instance = new DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT();
    OverrideMode_ALLOW_EXPLICIT_instance = new DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT();
    OverrideMode_FORBID_instance = new DIContainerBuilderImpl$OverrideMode$FORBID();
  }
  function OverrideMode(name, ordinal) {
    Enum.call(this, name, ordinal);
  }
  function checkOverrides($this, key, overrides) {
    var mustOverride = $this.b5h_1.s5h(overrides);
    if (!(mustOverride == null)) {
      var tmp;
      if (mustOverride) {
        // Inline function 'kotlin.collections.contains' call
        // Inline function 'kotlin.collections.containsKey' call
        var this_0 = $this.y5g_1;
        tmp = !(isInterface(this_0, Map) ? this_0 : THROW_CCE()).r(key);
      } else {
        tmp = false;
      }
      if (tmp)
        throw new OverridingException('Binding ' + key + ' must override an existing binding.');
      var tmp_0;
      if (!mustOverride) {
        // Inline function 'kotlin.collections.contains' call
        // Inline function 'kotlin.collections.containsKey' call
        var this_1 = $this.y5g_1;
        tmp_0 = (isInterface(this_1, Map) ? this_1 : THROW_CCE()).r(key);
      } else {
        tmp_0 = false;
      }
      if (tmp_0)
        throw new OverridingException('Binding ' + key + ' must not override an existing binding.');
    }
  }
  function checkMatch($this, allowOverride) {
    if (!$this.b5h_1.r5h() ? allowOverride : false)
      throw new OverridingException('Overriding has been forbidden');
  }
  function OverrideMode_ALLOW_SILENT_getInstance() {
    OverrideMode_initEntries();
    return OverrideMode_ALLOW_SILENT_instance;
  }
  function OverrideMode_ALLOW_EXPLICIT_getInstance() {
    OverrideMode_initEntries();
    return OverrideMode_ALLOW_EXPLICIT_instance;
  }
  function OverrideMode_FORBID_getInstance() {
    OverrideMode_initEntries();
    return OverrideMode_FORBID_instance;
  }
  function DIContainerBuilderImpl(allowOverride, silentOverride, bindingsMap, callbacks, translators) {
    this.y5g_1 = bindingsMap;
    this.z5g_1 = callbacks;
    this.a5h_1 = translators;
    this.b5h_1 = Companion_instance_2.x5h(allowOverride, silentOverride);
  }
  protoOf(DIContainerBuilderImpl).i5h = function (key, binding, fromModule, overrides) {
    checkOverrides(this, key, overrides);
    // Inline function 'kotlin.collections.getOrPut' call
    var this_0 = this.y5g_1;
    var value = this_0.q(key);
    var tmp;
    if (value == null) {
      // Inline function 'org.kodein.di.internal.DIContainerBuilderImpl.bind.<anonymous>' call
      var answer = newLinkedList();
      this_0.s(key, answer);
      tmp = answer;
    } else {
      tmp = value;
    }
    var bindings = tmp;
    bindings.c2(0, new DIDefining(isInterface(binding, DIBinding) ? binding : THROW_CCE(), fromModule));
  };
  protoOf(DIContainerBuilderImpl).c5h = function (container, allowOverride, copy) {
    checkMatch(this, allowOverride);
    // Inline function 'kotlin.collections.forEach' call
    // Inline function 'kotlin.collections.iterator' call
    var tmp0_iterator = container.t5d().c5c().q2().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DIContainerBuilderImpl.extend.<anonymous>' call
      // Inline function 'kotlin.collections.component1' call
      var key = element.s2();
      // Inline function 'kotlin.collections.component2' call
      var bindings = element.t2();
      if (!allowOverride) {
        checkOverrides(this, key, null);
      }
      var tmp;
      if (copy.a1(key)) {
        // Inline function 'kotlin.also' call
        var this_0 = newLinkedList();
        // Inline function 'kotlin.contracts.contract' call
        // Inline function 'org.kodein.di.internal.DIContainerBuilderImpl.extend.<anonymous>.<anonymous>' call
        // Inline function 'kotlin.collections.mapTo' call
        var tmp0_iterator_0 = bindings.w();
        while (tmp0_iterator_0.f()) {
          var item = tmp0_iterator_0.e();
          // Inline function 'org.kodein.di.internal.DIContainerBuilderImpl.extend.<anonymous>.<anonymous>.<anonymous>' call
          var tmp0_safe_receiver = item.q5b_1.d5c();
          var tmp1_elvis_lhs = tmp0_safe_receiver == null ? null : tmp0_safe_receiver.r5e(this);
          var tmp$ret$3 = new DIDefining(tmp1_elvis_lhs == null ? item.q5b_1 : tmp1_elvis_lhs, item.r5b_1);
          this_0.i1(tmp$ret$3);
        }
        tmp = this_0;
      } else {
        tmp = newLinkedList_0(bindings);
      }
      var newBindings = tmp;
      // Inline function 'kotlin.collections.set' call
      this.y5g_1.s(key, newBindings);
    }
    // Inline function 'kotlin.collections.plusAssign' call
    var this_1 = this.a5h_1;
    var elements = container.t5d().a5e();
    addAll(this_1, elements);
  };
  protoOf(DIContainerBuilderImpl).n5h = function (allowOverride, silentOverride) {
    checkMatch(this, allowOverride);
    return new DIContainerBuilderImpl(allowOverride, silentOverride, this.y5g_1, this.z5g_1, this.a5h_1);
  };
  protoOf(DIContainerBuilderImpl).o5h = function (translator) {
    // Inline function 'kotlin.collections.plusAssign' call
    this.a5h_1.i1(translator);
  };
  function displayString($this, key, overrideLevel) {
    var descProp = $this.d5i_1 ? bindFullDescription$factory_0(key) : bindDescription$factory_0(key);
    return !(overrideLevel === 0) ? 'overridden ' + descProp.get() : descProp.get();
  }
  function recursiveLoop($this, node, firstKey, firstOverrideLevel, tail) {
    var $this_0 = $this;
    var node_0 = node;
    var firstKey_0 = firstKey;
    var firstOverrideLevel_0 = firstOverrideLevel;
    var tail_0 = tail;
    $l$1: do {
      $l$0: do {
        var tmp;
        if (node_0.c5i_1 == null ? true : firstKey_0.equals(node_0.a5i_1) ? firstOverrideLevel_0 === node_0.b5i_1 : false) {
          tmp = plus(listOf(displayString($this_0, node_0.a5i_1, node_0.b5i_1)), tail_0);
        } else {
          var tmp0 = $this_0;
          var tmp4 = plus(listOf(displayString($this_0, node_0.a5i_1, node_0.b5i_1)), tail_0);
          $this_0 = tmp0;
          node_0 = node_0.c5i_1;
          firstKey_0 = firstKey_0;
          firstOverrideLevel_0 = firstOverrideLevel_0;
          tail_0 = tmp4;
          continue $l$0;
        }
        return tmp;
      }
       while (false);
    }
     while (true);
  }
  function recursiveCheck($this, node, searchedKey, searchedOverrideLevel) {
    var $this_0 = $this;
    var node_0 = node;
    var searchedKey_0 = searchedKey;
    var searchedOverrideLevel_0 = searchedOverrideLevel;
    $l$1: do {
      $l$0: do {
        var tmp;
        if (node_0.a5i_1.equals(searchedKey_0) ? node_0.b5i_1 === searchedOverrideLevel_0 : false) {
          tmp = false;
        } else if (node_0.c5i_1 == null) {
          tmp = true;
        } else {
          $this_0 = $this_0;
          node_0 = node_0.c5i_1;
          searchedKey_0 = searchedKey_0;
          searchedOverrideLevel_0 = searchedOverrideLevel_0;
          continue $l$0;
        }
        return tmp;
      }
       while (false);
    }
     while (true);
  }
  function DIContainerImpl_init_$Init$(builder, externalSources, fullDescriptionOnError, fullContainerTreeOnError, runCallbacks, $this) {
    DIContainerImpl.call($this, new DITreeImpl(builder.y5g_1, externalSources, builder.a5h_1), null, fullDescriptionOnError, fullContainerTreeOnError);
    var init = DIContainerImpl$_init_$lambda_r6ib3j($this, builder);
    if (runCallbacks)
      init();
    else {
      var lock = new Object();
      var tmp = $this;
      tmp.i5i_1 = DIContainerImpl$_init_$lambda_r6ib3j_0(lock, $this, init);
    }
    return $this;
  }
  function DIContainerImpl_init_$Create$(builder, externalSources, fullDescriptionOnError, fullContainerTreeOnError, runCallbacks) {
    return DIContainerImpl_init_$Init$(builder, externalSources, fullDescriptionOnError, fullContainerTreeOnError, runCallbacks, objectCreate(protoOf(DIContainerImpl)));
  }
  function Node(key, overrideLevel, parent, fullDescriptionOnError) {
    this.a5i_1 = key;
    this.b5i_1 = overrideLevel;
    this.c5i_1 = parent;
    this.d5i_1 = fullDescriptionOnError;
  }
  protoOf(Node).j5i = function (searchedKey, searchedOverrideLevel) {
    if (!recursiveCheck(this, this, searchedKey, searchedOverrideLevel)) {
      var list = plus_0(recursiveLoop(this, this, searchedKey, searchedOverrideLevel, emptyList()), displayString(this, searchedKey, this.b5i_1));
      var sb = StringBuilder_init_$Create$();
      // Inline function 'kotlin.collections.forEachIndexed' call
      var index = 0;
      var tmp0_iterator = list.w();
      while (tmp0_iterator.f()) {
        var item = tmp0_iterator.e();
        // Inline function 'org.kodein.di.internal.Node.check.<anonymous>' call
        var tmp1 = index;
        index = tmp1 + 1 | 0;
        var index_0 = checkIndexOverflow(tmp1);
        sb.y5('  ');
        switch (index_0) {
          case 0:
            sb.y5('   ');
            break;
          case 1:
            sb.y5('  \u2554\u2569>');
            break;
          default:
            sb.y5('  \u2551');
            sb.y5(repeat('  ', index_0 - 1 | 0));
            sb.y5('\u255A>');
            break;
        }
        sb.y5(item);
        sb.y5('\n');
      }
      sb.y5('    \u255A');
      sb.y5(repeat('\u2550\u2550', list.u() - 1 | 0));
      sb.y5('\u255D');
      throw new DependencyLoopException('Dependency recursion:\n' + sb);
    }
  };
  function bindingDI($this, key, context, tree, overrideLevel) {
    var container = new DIContainerImpl(tree, new Node(key, overrideLevel, $this.f5i_1, $this.g5i_1), $this.g5i_1, $this.h5i_1);
    return new BindingDIImpl(new DirectDIImpl(container, context), key, overrideLevel);
  }
  function DIContainerImpl$_init_$lambda_r6ib3j(this$0, $builder) {
    return function () {
      var direct = new DirectDIImpl(this$0, get_AnyDIContext());
      var tmp0_iterator = $builder.z5g_1.w();
      while (tmp0_iterator.f()) {
        var element = tmp0_iterator.e();
        // Inline function 'org.kodein.di.internal.DIContainerImpl.<init>.<anonymous>.<anonymous>' call
        element(direct);
      }
      return Unit_instance;
    };
  }
  function DIContainerImpl$_init_$lambda_r6ib3j_0($lock, this$0, $init) {
    return function () {
      $l$block_1: {
        // Inline function 'org.kodein.di.internal.synchronizedIfNotNull' call
        if (this$0.i5i_1 == null) {
          // Inline function 'org.kodein.di.internal.DIContainerImpl.<init>.<anonymous>.<anonymous>' call
          break $l$block_1;
        }
        // Inline function 'org.kodein.di.internal.maySynchronized' call
        $l$block_0: {
          // Inline function 'org.kodein.di.internal.synchronizedIfNotNull.<anonymous>' call
          var tmp0_elvis_lhs = this$0.i5i_1;
          var tmp;
          if (tmp0_elvis_lhs == null) {
            break $l$block_0;
          } else {
            tmp = tmp0_elvis_lhs;
          }
          var value = tmp;
          this$0.i5i_1 = null;
          $init();
          break $l$block_1;
        }
        // Inline function 'org.kodein.di.internal.DIContainerImpl.<init>.<anonymous>.<anonymous>' call
      }
      return Unit_instance;
    };
  }
  function DIContainerImpl$factory$lambda($this$null, it) {
    return fullDescription($this$null, it);
  }
  function DIContainerImpl$factory$lambda_0($this$null, it) {
    return description($this$null, it);
  }
  function DIContainerImpl(tree, node, fullDescriptionOnError, fullContainerTreeOnError) {
    this.e5i_1 = tree;
    this.f5i_1 = node;
    this.g5i_1 = fullDescriptionOnError;
    this.h5i_1 = fullContainerTreeOnError;
    this.i5i_1 = null;
  }
  protoOf(DIContainerImpl).t5d = function () {
    return this.e5i_1;
  };
  protoOf(DIContainerImpl).w5d = function (key, context, overrideLevel) {
    // Inline function 'kotlin.let' call
    // Inline function 'kotlin.contracts.contract' call
    var it = this.e5i_1.d5e(key, 0);
    var tmp;
    if (it.u() === 1) {
      var tmp0_container = it.v(0);
      var definition = tmp0_container.z6();
      var translator = tmp0_container.dn();
      var tmp1_safe_receiver = this.f5i_1;
      if (tmp1_safe_receiver == null)
        null;
      else {
        tmp1_safe_receiver.j5i(key, 0);
      }
      var tmp_0 = Companion_instance_0.m5d(key.s5b_1, context);
      var originalContext = isInterface(tmp_0, DIContext) ? tmp_0 : THROW_CCE();
      var tmp3_elvis_lhs = translator == null ? null : toKContext(translator, new DirectDIImpl(this, originalContext), context);
      var kContext = tmp3_elvis_lhs == null ? originalContext : tmp3_elvis_lhs;
      if (!(key instanceof Key))
        THROW_CCE();
      var bindingDI_0 = bindingDI(this, key, kContext, definition.p5b_1, overrideLevel);
      return definition.q5b_1.y5e(key, bindingDI_0);
    }
    var bindingDI_1 = bindingDI(this, key, Companion_instance_0.m5d(key.s5b_1, context), this.e5i_1, overrideLevel);
    // Inline function 'kotlin.collections.forEach' call
    var tmp0_iterator = this.e5i_1.b5e().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DIContainerImpl.factoryOrNull.<anonymous>' call
      var tmp0_safe_receiver = element.k5i(bindingDI_1, key);
      if (tmp0_safe_receiver == null)
        null;
      else {
        // Inline function 'kotlin.let' call
        // Inline function 'kotlin.contracts.contract' call
        var tmp0_safe_receiver_0 = this.f5i_1;
        if (tmp0_safe_receiver_0 == null)
          null;
        else {
          tmp0_safe_receiver_0.j5i(key, 0);
        }
        return (!(tmp0_safe_receiver == null) ? typeof tmp0_safe_receiver === 'function' : false) ? tmp0_safe_receiver : THROW_CCE();
      }
    }
    return null;
  };
  protoOf(DIContainerImpl).u5d = function (key, context, overrideLevel) {
    var result = this.e5i_1.d5e(key, overrideLevel);
    if (result.u() === 1) {
      var tmp0_container = result.v(0);
      var definition = tmp0_container.z6();
      var translator = tmp0_container.dn();
      var tmp1_safe_receiver = this.f5i_1;
      if (tmp1_safe_receiver == null)
        null;
      else {
        tmp1_safe_receiver.j5i(key, overrideLevel);
      }
      var tmp = Companion_instance_0.m5d(key.s5b_1, context);
      var originalContext = isInterface(tmp, DIContext) ? tmp : THROW_CCE();
      var tmp3_elvis_lhs = translator == null ? null : toKContext(translator, new DirectDIImpl(this, originalContext), context);
      var kContext = tmp3_elvis_lhs == null ? originalContext : tmp3_elvis_lhs;
      if (!(key instanceof Key))
        THROW_CCE();
      var bindingDI_0 = bindingDI(this, key, kContext, definition.p5b_1, overrideLevel);
      return definition.q5b_1.y5e(key, bindingDI_0);
    }
    var bindingDI_1 = bindingDI(this, key, Companion_instance_0.m5d(key.s5b_1, context), this.e5i_1, overrideLevel);
    // Inline function 'kotlin.collections.forEach' call
    var tmp0_iterator = this.e5i_1.b5e().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DIContainerImpl.factory.<anonymous>' call
      var tmp0_safe_receiver = element.k5i(bindingDI_1, key);
      if (tmp0_safe_receiver == null)
        null;
      else {
        // Inline function 'kotlin.let' call
        // Inline function 'kotlin.contracts.contract' call
        var tmp0_safe_receiver_0 = this.f5i_1;
        if (tmp0_safe_receiver_0 == null)
          null;
        else {
          tmp0_safe_receiver_0.j5i(key, overrideLevel);
        }
        return (!(tmp0_safe_receiver == null) ? typeof tmp0_safe_receiver === 'function' : false) ? tmp0_safe_receiver : THROW_CCE();
      }
    }
    var withOverrides = !(overrideLevel === 0);
    var descProp = this.g5i_1 ? fullDescription$factory_0(key) : description$factory_0(key);
    var tmp_0;
    if (this.g5i_1) {
      tmp_0 = DIContainerImpl$factory$lambda;
    } else {
      tmp_0 = DIContainerImpl$factory$lambda_0;
    }
    var descFun = tmp_0;
    if (result.c1()) {
      // 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 'org.kodein.di.internal.DIContainerImpl.factory.<anonymous>' call
      this_0.y5('No binding found for ' + descProp.get());
      if (this.h5i_1) {
        // Inline function 'kotlin.text.appendLine' call
        this_0.z5(_Char___init__impl__6a9atx(10));
        var forType = this.e5i_1.e5e(new SearchSpecs(VOID, VOID, key.u5b_1));
        // Inline function 'kotlin.collections.isNotEmpty' call
        if (!forType.c1()) {
          // Inline function 'kotlin.collections.associate' call
          var capacity = coerceAtLeast(mapCapacity(collectionSizeOrDefault(forType, 10)), 16);
          // Inline function 'kotlin.collections.associateTo' call
          var destination = LinkedHashMap_init_$Create$_0(capacity);
          var tmp0_iterator_0 = forType.w();
          while (tmp0_iterator_0.f()) {
            var element_0 = tmp0_iterator_0.e();
            // Inline function 'kotlin.collections.plusAssign' call
            // Inline function 'org.kodein.di.internal.DIContainerImpl.factory.<anonymous>.<anonymous>' call
            var pair = to(element_0.an_1, element_0.bn_1);
            destination.s(pair.w6_1, pair.x6_1);
          }
          this_0.y5('Available bindings for this type:\n' + descFun(destination, withOverrides));
        }
        this_0.y5('Registered in this DI container:\n' + descFun(this.e5i_1.c5c(), withOverrides));
      }
      var description = this_0.toString();
      throw new NotFoundException(key, description);
    }
    // Inline function 'kotlin.collections.associate' call
    var capacity_0 = coerceAtLeast(mapCapacity(collectionSizeOrDefault(result, 10)), 16);
    // Inline function 'kotlin.collections.associateTo' call
    var destination_0 = LinkedHashMap_init_$Create$_0(capacity_0);
    var tmp0_iterator_1 = result.w();
    while (tmp0_iterator_1.f()) {
      var element_1 = tmp0_iterator_1.e();
      // Inline function 'kotlin.collections.plusAssign' call
      // Inline function 'org.kodein.di.internal.DIContainerImpl.factory.<anonymous>' call
      var pair_0 = to(element_1.an_1, ensureNotNull(this.e5i_1.f5e(element_1.an_1)).bn_1);
      destination_0.s(pair_0.w6_1, pair_0.x6_1);
    }
    var potentials = destination_0;
    // Inline function 'kotlin.collections.filter' call
    // Inline function 'kotlin.collections.filterTo' call
    var this_1 = this.e5i_1.c5c();
    var destination_1 = LinkedHashMap_init_$Create$();
    // Inline function 'kotlin.collections.iterator' call
    var tmp0_iterator_2 = this_1.q2().w();
    while (tmp0_iterator_2.f()) {
      var element_2 = tmp0_iterator_2.e();
      // Inline function 'org.kodein.di.internal.DIContainerImpl.factory.<anonymous>' call
      // Inline function 'kotlin.collections.component1' call
      var key_0 = element_2.s2();
      if (!potentials.o2().a1(key_0)) {
        destination_1.s(element_2.s2(), element_2.t2());
      }
    }
    var others = destination_1;
    throw new NotFoundException(key, '' + potentials.u() + ' bindings found that match ' + key + ':\n' + descFun(potentials, withOverrides) + 'Other bindings registered in DI:\n' + descFun(others, withOverrides));
  };
  function bindFullDescription$factory_0($b0) {
    return getPropertyCallableRef('bindFullDescription', 0, KProperty0, function () {
      return $b0.z5b();
    }, null);
  }
  function bindDescription$factory_0($b0) {
    return getPropertyCallableRef('bindDescription', 0, KProperty0, function () {
      return $b0.x5b();
    }, null);
  }
  function fullDescription$factory_0($b0) {
    return getPropertyCallableRef('fullDescription', 0, KProperty0, function () {
      return $b0.a5c();
    }, null);
  }
  function description$factory_0($b0) {
    return getPropertyCallableRef('description', 0, KProperty0, function () {
      return $b0.y5b();
    }, null);
  }
  function newBuilder($this, allowSilentOverride, init) {
    // Inline function 'kotlin.apply' call
    var this_0 = new DIMainBuilderImpl(allowSilentOverride);
    // Inline function 'kotlin.contracts.contract' call
    init(this_0);
    return this_0;
  }
  function DIImpl_init_$Init$(builder, runCallbacks, $this) {
    DIImpl.call($this, DIContainerImpl_init_$Create$(builder.r5c(), builder.b5e(), builder.r5g(), builder.s5g(), runCallbacks));
    return $this;
  }
  function DIImpl_init_$Init$_0(allowSilentOverride, init, $this) {
    allowSilentOverride = allowSilentOverride === VOID ? false : allowSilentOverride;
    DIImpl_init_$Init$(newBuilder(Companion_instance_3, allowSilentOverride, init), true, $this);
    return $this;
  }
  function DIImpl_init_$Create$(allowSilentOverride, init) {
    return DIImpl_init_$Init$_0(allowSilentOverride, init, objectCreate(protoOf(DIImpl)));
  }
  function Companion_3() {
  }
  var Companion_instance_3;
  function Companion_getInstance_4() {
    return Companion_instance_3;
  }
  function DIImpl$container$delegate$lambda(this$0) {
    return function () {
      var tmp;
      if (!(this$0.l5i_1.i5i_1 == null)) {
        throw IllegalStateException_init_$Create$('DI has not been initialized');
      }
      return this$0.l5i_1;
    };
  }
  function DIImpl(_container) {
    this.l5i_1 = _container;
    var tmp = this;
    tmp.m5i_1 = lazy(DIImpl$container$delegate$lambda(this));
  }
  protoOf(DIImpl).g5d = function () {
    // Inline function 'kotlin.getValue' call
    var this_0 = this.m5i_1;
    container$factory();
    return this_0.t2();
  };
  function BindingDIImpl(directDI, key, overrideLevel) {
    this.n5i_1 = directDI;
    this.o5i_1 = key;
    this.p5i_1 = overrideLevel;
  }
  protoOf(BindingDIImpl).k5e = function () {
    return this.n5i_1;
  };
  protoOf(BindingDIImpl).f5d = function () {
    return this.n5i_1.f5d();
  };
  protoOf(BindingDIImpl).g5e = function () {
    return this.n5i_1.g5e();
  };
  protoOf(BindingDIImpl).i5e = function (type, tag) {
    return this.n5i_1.i5e(type, tag);
  };
  protoOf(BindingDIImpl).j5e = function (type, tag) {
    return this.n5i_1.j5e(type, tag);
  };
  protoOf(BindingDIImpl).h5e = function (context) {
    return this.n5i_1.h5e(context);
  };
  protoOf(BindingDIImpl).od = function () {
    var tmp = this.k5e().f5d().h5d().t2();
    return !(tmp == null) ? tmp : THROW_CCE();
  };
  protoOf(BindingDIImpl).z5f = function () {
    return new BindingDIImpl(this.k5e().h5e(ErasedContext_instance), this.o5i_1, this.p5i_1);
  };
  function container$factory() {
    return getPropertyCallableRef('container', 1, KProperty1, function (receiver) {
      return receiver.g5d();
    }, null);
  }
  function findBySpecs($this, specs) {
    var bindSeq = asSequence($this.t5i_1);
    var specsBindType = specs.n5e_1;
    if (!(specsBindType == null) ? !equals(specsBindType, Companion_getInstance().w5a_1) : false) {
      var tmp = bindSeq;
      bindSeq = filter(tmp, DITreeImpl$findBySpecs$lambda(specsBindType));
    }
    var tmp_0 = bindSeq;
    var contextSeq = flatMap(tmp_0, DITreeImpl$findBySpecs$lambda_0);
    var specsContextType = specs.l5e_1;
    if (!(specsContextType == null)) {
      var tmp_1 = contextSeq;
      contextSeq = mapNotNull(tmp_1, DITreeImpl$findBySpecs$lambda_1(specsContextType, $this));
    }
    var tmp_2 = contextSeq;
    var argSeq = flatMap(tmp_2, DITreeImpl$findBySpecs$lambda_2);
    var specsArgType = specs.m5e_1;
    if (!(specsArgType == null)) {
      var tmp_3 = argSeq;
      argSeq = filter(tmp_3, DITreeImpl$findBySpecs$lambda_3(specsArgType));
    }
    var tmp_4 = argSeq;
    var tagSeq = flatMap(tmp_4, DITreeImpl$findBySpecs$lambda_4);
    var specsTag = specs.o5e_1;
    if (!equals(specsTag, NoDefinedTag_instance)) {
      var tmp_5 = tagSeq;
      tagSeq = filter(tmp_5, DITreeImpl$findBySpecs$lambda_5(specsTag));
    }
    var tmp_6 = tagSeq;
    var resultSeq = map(tmp_6, DITreeImpl$findBySpecs$lambda_6);
    return toList(resultSeq);
  }
  function notInMap($this, result, request) {
    var tmp = result.o5c();
    var tmp_0 = request.o5c();
    var tmp_1 = $this.s5i_1.o2();
    return IllegalStateException_init_$Create$('Tree returned key ' + tmp + ' that is not in cache when searching for ' + tmp_0 + '.\nKeys in cache:\n' + joinToString(tmp_1, '\n', VOID, VOID, VOID, VOID, DITreeImpl$notInMap$lambda));
  }
  function DITreeImpl$findBySpecs$lambda($specsBindType) {
    return function (_name_for_destructuring_parameter_0__wldtmu) {
      // Inline function 'kotlin.collections.component1' call
      var bindType = _name_for_destructuring_parameter_0__wldtmu.s2();
      return bindType.w5i($specsBindType);
    };
  }
  function DITreeImpl$findBySpecs$lambda_0(_name_for_destructuring_parameter_0__wldtmu) {
    // Inline function 'kotlin.collections.component2' call
    var contextTree = _name_for_destructuring_parameter_0__wldtmu.t2();
    var tmp = asSequence(contextTree);
    return map(tmp, DITreeImpl$findBySpecs$lambda$lambda);
  }
  function DITreeImpl$findBySpecs$lambda$lambda(it) {
    return new Triple(it.s2(), it.t2(), null);
  }
  function DITreeImpl$findBySpecs$lambda_1($specsContextType, this$0) {
    return function (triple) {
      var contextType = triple.y6();
      var tmp;
      if (contextType.w5i($specsContextType)) {
        tmp = triple;
      } else {
        var tmp$ret$1;
        $l$block: {
          // Inline function 'kotlin.collections.firstOrNull' call
          var tmp0_iterator = this$0.v5i_1.w();
          while (tmp0_iterator.f()) {
            var element = tmp0_iterator.e();
            // Inline function 'org.kodein.di.internal.DITreeImpl.findBySpecs.<anonymous>.<anonymous>' call
            if (element.g5c().f5b($specsContextType) ? contextType.w5i(element.f5f()) : false) {
              tmp$ret$1 = element;
              break $l$block;
            }
          }
          tmp$ret$1 = null;
        }
        var translator = tmp$ret$1;
        tmp = !(translator == null) ? triple.fn(VOID, VOID, translator) : null;
      }
      return tmp;
    };
  }
  function DITreeImpl$findBySpecs$lambda_2(_name_for_destructuring_parameter_0__wldtmu) {
    var argumentTree = _name_for_destructuring_parameter_0__wldtmu.z6();
    var translator = _name_for_destructuring_parameter_0__wldtmu.dn();
    var tmp = asSequence(argumentTree);
    return map(tmp, DITreeImpl$findBySpecs$lambda$lambda_0(translator));
  }
  function DITreeImpl$findBySpecs$lambda$lambda_0($translator) {
    return function (it) {
      return new Triple(it.s2(), it.t2(), $translator);
    };
  }
  function DITreeImpl$findBySpecs$lambda_3($specsArgType) {
    return function (_name_for_destructuring_parameter_0__wldtmu) {
      var argType = _name_for_destructuring_parameter_0__wldtmu.y6();
      return argType.w5i($specsArgType);
    };
  }
  function DITreeImpl$findBySpecs$lambda_4(_name_for_destructuring_parameter_0__wldtmu) {
    var tagTree = _name_for_destructuring_parameter_0__wldtmu.z6();
    var translator = _name_for_destructuring_parameter_0__wldtmu.dn();
    var tmp = asSequence(tagTree);
    return map(tmp, DITreeImpl$findBySpecs$lambda$lambda_1(translator));
  }
  function DITreeImpl$findBySpecs$lambda$lambda_1($translator) {
    return function (it) {
      return new Triple(it.s2(), it.t2(), $translator);
    };
  }
  function DITreeImpl$findBySpecs$lambda_5($specsTag) {
    return function (_name_for_destructuring_parameter_0__wldtmu) {
      var tag = _name_for_destructuring_parameter_0__wldtmu.y6();
      return equals(tag, $specsTag);
    };
  }
  function DITreeImpl$findBySpecs$lambda_6(_name_for_destructuring_parameter_0__wldtmu) {
    var key = _name_for_destructuring_parameter_0__wldtmu.z6();
    var translator = _name_for_destructuring_parameter_0__wldtmu.dn();
    return to(key, translator);
  }
  function DITreeImpl$notInMap$lambda(it) {
    return it.o5c();
  }
  function DITreeImpl(map, externalSources, registeredTranslators) {
    this.q5i_1 = externalSources;
    this.r5i_1 = registeredTranslators;
    this.s5i_1 = newConcurrentMap();
    this.t5i_1 = HashMap_init_$Create$();
    this.v5i_1 = ArrayList_init_$Create$_1(this.r5i_1);
    // Inline function 'kotlin.collections.forEach' call
    // Inline function 'kotlin.collections.iterator' call
    var tmp0_iterator = map.q2().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>' call
      // Inline function 'kotlin.collections.component1' call
      var key = element.s2();
      // Inline function 'kotlin.collections.component2' call
      var bindings = element.t2();
      // Inline function 'kotlin.collections.map' call
      // Inline function 'kotlin.collections.mapTo' call
      var destination = ArrayList_init_$Create$_0(collectionSizeOrDefault(bindings, 10));
      var tmp0_iterator_0 = bindings.w();
      while (tmp0_iterator_0.f()) {
        var item = tmp0_iterator_0.e();
        // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>.<anonymous>' call
        var tmp;
        if (item instanceof DIDefinition) {
          tmp = item;
        } else {
          tmp = new DIDefinition(item.q5b_1, item.r5b_1, this);
        }
        var tmp$ret$3 = tmp;
        destination.i1(tmp$ret$3);
      }
      var definitions = destination;
      // Inline function 'kotlin.collections.set' call
      var this_0 = this.s5i_1;
      var value = new Triple(key, definitions, null);
      this_0.s(key, value);
      var typeChecker = first(bindings).q5b_1.x5e() ? new Down(key.u5b_1) : new Up(key.u5b_1);
      // Inline function 'kotlin.collections.getOrPut' call
      var this_1 = this.t5i_1;
      var value_0 = this_1.q(typeChecker);
      var tmp_0;
      if (value_0 == null) {
        // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>.<anonymous>' call
        var answer = HashMap_init_$Create$();
        this_1.s(typeChecker, answer);
        tmp_0 = answer;
      } else {
        tmp_0 = value_0;
      }
      var contextTree = tmp_0;
      // Inline function 'kotlin.collections.getOrPut' call
      var key_0 = new Down(key.s5b_1);
      var value_1 = contextTree.q(key_0);
      var tmp_1;
      if (value_1 == null) {
        // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>.<anonymous>' call
        var answer_0 = HashMap_init_$Create$();
        contextTree.s(key_0, answer_0);
        tmp_1 = answer_0;
      } else {
        tmp_1 = value_1;
      }
      var argumentTree = tmp_1;
      // Inline function 'kotlin.collections.getOrPut' call
      var key_1 = new Down(key.t5b_1);
      var value_2 = argumentTree.q(key_1);
      var tmp_2;
      if (value_2 == null) {
        // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>.<anonymous>' call
        var answer_1 = HashMap_init_$Create$();
        argumentTree.s(key_1, answer_1);
        tmp_2 = answer_1;
      } else {
        tmp_2 = value_2;
      }
      var tagTree = tmp_2;
      // Inline function 'kotlin.collections.set' call
      var key_2 = key.v5b_1;
      tagTree.s(key_2, key);
    }
    var tmp_3 = this;
    // Inline function 'kotlin.collections.mapValues' call
    var this_2 = this.s5i_1;
    // Inline function 'kotlin.collections.mapValuesTo' call
    var destination_0 = LinkedHashMap_init_$Create$_0(mapCapacity(this_2.u()));
    // Inline function 'kotlin.collections.associateByTo' call
    var tmp0_iterator_1 = this_2.q2().w();
    while (tmp0_iterator_1.f()) {
      var element_0 = tmp0_iterator_1.e();
      // Inline function 'kotlin.collections.mapValuesTo.<anonymous>' call
      var tmp_4 = element_0.s2();
      // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>' call
      var tmp$ret$13 = element_0.t2().bn_1;
      destination_0.s(tmp_4, tmp$ret$13);
    }
    tmp_3.u5i_1 = HashMap_init_$Create$_0(destination_0);
    $l$loop: while (true) {
      var added = ArrayList_init_$Create$();
      var tmp0_iterator_2 = this.v5i_1.w();
      while (tmp0_iterator_2.f()) {
        var src = tmp0_iterator_2.e();
        var tmp1_iterator = this.v5i_1.w();
        while (tmp1_iterator.f()) {
          var dst = tmp1_iterator.e();
          if (dst.g5c().f5b(src.f5f()) ? !equals(src.g5c(), dst.f5f()) : false) {
            var tmp$ret$17;
            $l$block_0: {
              // Inline function 'kotlin.collections.none' call
              var this_3 = this.v5i_1;
              var tmp_5;
              if (isInterface(this_3, Collection)) {
                tmp_5 = this_3.c1();
              } else {
                tmp_5 = false;
              }
              if (tmp_5) {
                tmp$ret$17 = true;
                break $l$block_0;
              }
              var tmp0_iterator_3 = this_3.w();
              while (tmp0_iterator_3.f()) {
                var element_1 = tmp0_iterator_3.e();
                // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>' call
                if (equals(element_1.g5c(), src.g5c()) ? equals(element_1.f5f(), dst.f5f()) : false) {
                  tmp$ret$17 = false;
                  break $l$block_0;
                }
              }
              tmp$ret$17 = true;
            }
            if (tmp$ret$17) {
              // Inline function 'kotlin.collections.plusAssign' call
              var tmp_6 = isInterface(src, ContextTranslator) ? src : THROW_CCE();
              var element_2 = new CompositeContextTranslator(tmp_6, isInterface(dst, ContextTranslator) ? dst : THROW_CCE());
              added.i1(element_2);
            }
          }
        }
      }
      // Inline function 'kotlin.collections.plusAssign' call
      var this_4 = this.v5i_1;
      addAll(this_4, added);
      if (added.c1())
        break $l$loop;
    }
  }
  protoOf(DITreeImpl).b5e = function () {
    return this.q5i_1;
  };
  protoOf(DITreeImpl).a5e = function () {
    return this.r5i_1;
  };
  protoOf(DITreeImpl).c5c = function () {
    return this.u5i_1;
  };
  protoOf(DITreeImpl).c5e = function (key, overrideLevel, all) {
    if (!all) {
      var tmp0_safe_receiver = this.s5i_1.q(key);
      if (tmp0_safe_receiver == null)
        null;
      else {
        // Inline function 'kotlin.let' call
        // Inline function 'kotlin.contracts.contract' call
        var realKey = tmp0_safe_receiver.y6();
        var list = tmp0_safe_receiver.z6();
        var translator = tmp0_safe_receiver.dn();
        var tmp0_elvis_lhs = getOrNull(list, overrideLevel);
        var tmp;
        if (tmp0_elvis_lhs == null) {
          return emptyList();
        } else {
          tmp = tmp0_elvis_lhs;
        }
        var definition = tmp;
        var tmp_0 = realKey instanceof Key ? realKey : THROW_CCE();
        var tmp_1 = definition instanceof DIDefinition ? definition : THROW_CCE();
        return listOf(new Triple(tmp_0, tmp_1, (translator == null ? true : isInterface(translator, ContextTranslator)) ? translator : THROW_CCE()));
      }
      if (!equals(key.s5b_1, Companion_getInstance().w5a_1)) {
        var anyContextKey = key.q5c(Companion_getInstance().w5a_1);
        var tmp1_safe_receiver = this.s5i_1.q(anyContextKey);
        if (tmp1_safe_receiver == null)
          null;
        else {
          // Inline function 'kotlin.let' call
          // Inline function 'kotlin.contracts.contract' call
          $l$block: {
            // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
            var realKey_0 = tmp1_safe_receiver.y6();
            var list_0 = tmp1_safe_receiver.z6();
            var translator_0 = tmp1_safe_receiver.dn();
            if (!(translator_0 == null) ? !equals(translator_0.g5c(), key.s5b_1) : false) {
              break $l$block;
            }
            // Inline function 'kotlin.collections.set' call
            this.s5i_1.s(key, tmp1_safe_receiver);
            var tmp1_elvis_lhs = getOrNull(list_0, overrideLevel);
            var tmp_2;
            if (tmp1_elvis_lhs == null) {
              return emptyList();
            } else {
              tmp_2 = tmp1_elvis_lhs;
            }
            var definition_0 = tmp_2;
            var tmp_3 = realKey_0 instanceof Key ? realKey_0 : THROW_CCE();
            var tmp_4 = definition_0 instanceof DIDefinition ? definition_0 : THROW_CCE();
            return listOf(new Triple(tmp_3, tmp_4, (translator_0 == null ? true : isInterface(translator_0, ContextTranslator)) ? translator_0 : THROW_CCE()));
          }
        }
      }
      // Inline function 'kotlin.collections.filter' call
      // Inline function 'kotlin.collections.filterTo' call
      var this_0 = this.v5i_1;
      var destination = ArrayList_init_$Create$();
      var tmp0_iterator = this_0.w();
      while (tmp0_iterator.f()) {
        var element = tmp0_iterator.e();
        // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
        if (equals(element.g5c(), key.s5b_1)) {
          destination.i1(element);
        }
      }
      var tmp_5 = destination;
      // Inline function 'kotlin.collections.filter' call
      // Inline function 'kotlin.collections.filterTo' call
      var this_1 = this.v5i_1;
      var destination_0 = ArrayList_init_$Create$();
      var tmp0_iterator_0 = this_1.w();
      while (tmp0_iterator_0.f()) {
        var element_0 = tmp0_iterator_0.e();
        // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
        if (equals(element_0.g5c(), Companion_getInstance().w5a_1)) {
          destination_0.i1(element_0);
        }
      }
      var applicableTranslators = plus(tmp_5, destination_0);
      var tmp2_iterator = applicableTranslators.w();
      while (tmp2_iterator.f()) {
        var translator_1 = tmp2_iterator.e();
        var translatedKey = new Key(translator_1.f5f(), key.t5b_1, key.u5b_1, key.v5b_1);
        var tmp3_safe_receiver = this.s5i_1.q(translatedKey);
        var tmp_6;
        if (tmp3_safe_receiver == null) {
          tmp_6 = null;
        } else {
          // Inline function 'kotlin.takeIf' call
          // Inline function 'kotlin.contracts.contract' call
          var tmp_7;
          // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
          if (tmp3_safe_receiver.cn_1 == null) {
            tmp_7 = tmp3_safe_receiver;
          } else {
            tmp_7 = null;
          }
          tmp_6 = tmp_7;
        }
        var tmp4_safe_receiver = tmp_6;
        if (tmp4_safe_receiver == null)
          null;
        else {
          // Inline function 'kotlin.let' call
          // Inline function 'kotlin.contracts.contract' call
          $l$block_0: {
            // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
            if (!(tmp4_safe_receiver.cn_1 == null)) {
              break $l$block_0;
            }
            // Inline function 'kotlin.collections.set' call
            var this_2 = this.s5i_1;
            var value = tmp4_safe_receiver.fn(VOID, VOID, translator_1);
            this_2.s(key, value);
            var realKey_1 = tmp4_safe_receiver.y6();
            var list_1 = tmp4_safe_receiver.z6();
            var tmp1_elvis_lhs_0 = getOrNull(list_1, overrideLevel);
            var tmp_8;
            if (tmp1_elvis_lhs_0 == null) {
              return emptyList();
            } else {
              tmp_8 = tmp1_elvis_lhs_0;
            }
            var definition_1 = tmp_8;
            var tmp_9 = realKey_1 instanceof Key ? realKey_1 : THROW_CCE();
            var tmp_10 = definition_1 instanceof DIDefinition ? definition_1 : THROW_CCE();
            return listOf(new Triple(tmp_9, tmp_10, isInterface(translator_1, ContextTranslator) ? translator_1 : THROW_CCE()));
          }
        }
      }
    }
    var result = findBySpecs(this, new SearchSpecs(key.s5b_1, key.t5b_1, key.u5b_1, key.v5b_1));
    if (result.u() === 1) {
      var tmp5_container = first(result);
      var realKey_2 = tmp5_container.y6();
      var translator_2 = tmp5_container.z6();
      // Inline function 'kotlin.collections.set' call
      var this_3 = this.s5i_1;
      var tmp6_safe_receiver = this.s5i_1.q(realKey_2);
      var tmp7_elvis_lhs = tmp6_safe_receiver == null ? null : tmp6_safe_receiver.fn(VOID, VOID, translator_2);
      var tmp_11;
      if (tmp7_elvis_lhs == null) {
        throw notInMap(this, realKey_2, key);
      } else {
        tmp_11 = tmp7_elvis_lhs;
      }
      var value_0 = tmp_11;
      this_3.s(key, value_0);
    }
    // Inline function 'kotlin.collections.mapNotNull' call
    // Inline function 'kotlin.collections.mapNotNullTo' call
    var destination_1 = ArrayList_init_$Create$();
    // Inline function 'kotlin.collections.forEach' call
    var tmp0_iterator_1 = result.w();
    while (tmp0_iterator_1.f()) {
      var element_1 = tmp0_iterator_1.e();
      // Inline function 'kotlin.collections.mapNotNullTo.<anonymous>' call
      var tmp$ret$13;
      $l$block_1: {
        // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
        var realKey_3 = element_1.y6();
        var translator_3 = element_1.z6();
        var tmp0_elvis_lhs_0 = this.s5i_1.q(realKey_3);
        var tmp_12;
        if (tmp0_elvis_lhs_0 == null) {
          throw notInMap(this, realKey_3, key);
        } else {
          tmp_12 = tmp0_elvis_lhs_0;
        }
        var definitions = tmp_12.z6();
        var tmp2_elvis_lhs = getOrNull(definitions, overrideLevel);
        var tmp_13;
        if (tmp2_elvis_lhs == null) {
          tmp$ret$13 = null;
          break $l$block_1;
        } else {
          tmp_13 = tmp2_elvis_lhs;
        }
        var definition_2 = tmp_13;
        var tmp_14 = realKey_3 instanceof Key ? realKey_3 : THROW_CCE();
        var tmp_15 = definition_2 instanceof DIDefinition ? definition_2 : THROW_CCE();
        tmp$ret$13 = new Triple(tmp_14, tmp_15, (translator_3 == null ? true : isInterface(translator_3, ContextTranslator)) ? translator_3 : THROW_CCE());
      }
      var tmp0_safe_receiver_0 = tmp$ret$13;
      if (tmp0_safe_receiver_0 == null)
        null;
      else {
        // Inline function 'kotlin.let' call
        // Inline function 'kotlin.contracts.contract' call
        destination_1.i1(tmp0_safe_receiver_0);
      }
    }
    return destination_1;
  };
  protoOf(DITreeImpl).e5e = function (search) {
    var result = findBySpecs(this, search);
    // Inline function 'kotlin.collections.map' call
    // Inline function 'kotlin.collections.mapTo' call
    var destination = ArrayList_init_$Create$_0(collectionSizeOrDefault(result, 10));
    var tmp0_iterator = result.w();
    while (tmp0_iterator.f()) {
      var item = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
      var key = item.y6();
      var translator = item.z6();
      var tmp$ret$0 = new Triple(key, ensureNotNull(this.s5i_1.q(key)).bn_1, translator);
      destination.i1(tmp$ret$0);
    }
    return destination;
  };
  protoOf(DITreeImpl).f5e = function (key) {
    var tmp = this.s5i_1.q(key);
    return (tmp == null ? true : tmp instanceof Triple) ? tmp : THROW_CCE();
  };
  function Down(type) {
    TypeChecker.call(this);
    this.x5i_1 = type;
    this.y5i_1 = equals(this.x5i_1, Companion_getInstance().w5a_1);
  }
  protoOf(Down).w5i = function (other) {
    return this.y5i_1 ? true : this.x5i_1.f5b(other);
  };
  protoOf(Down).toString = function () {
    return 'Down(type=' + this.x5i_1 + ')';
  };
  protoOf(Down).hashCode = function () {
    return hashCode(this.x5i_1);
  };
  protoOf(Down).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Down))
      return false;
    var tmp0_other_with_cast = other instanceof Down ? other : THROW_CCE();
    if (!equals(this.x5i_1, tmp0_other_with_cast.x5i_1))
      return false;
    return true;
  };
  function Up(type) {
    TypeChecker.call(this);
    this.z5i_1 = type;
  }
  protoOf(Up).w5i = function (other) {
    return equals(other, Companion_getInstance().w5a_1) ? true : other.f5b(this.z5i_1);
  };
  protoOf(Up).toString = function () {
    return 'Up(type=' + this.z5i_1 + ')';
  };
  protoOf(Up).hashCode = function () {
    return hashCode(this.z5i_1);
  };
  protoOf(Up).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Up))
      return false;
    var tmp0_other_with_cast = other instanceof Up ? other : THROW_CCE();
    if (!equals(this.z5i_1, tmp0_other_with_cast.z5i_1))
      return false;
    return true;
  };
  function TypeChecker() {
  }
  function DirectDIBaseImpl(container, context) {
    this.a5j_1 = container;
    this.b5j_1 = context;
  }
  protoOf(DirectDIBaseImpl).g5d = function () {
    return this.a5j_1;
  };
  protoOf(DirectDIBaseImpl).k5e = function () {
    return this;
  };
  protoOf(DirectDIBaseImpl).g5e = function () {
    var tmp = this.g5d();
    return On(new DIImpl(tmp instanceof DIContainerImpl ? tmp : THROW_CCE()), this.b5j_1);
  };
  protoOf(DirectDIBaseImpl).h5e = function (context) {
    return new DirectDIImpl(this.g5d(), context);
  };
  protoOf(DirectDIBaseImpl).i5e = function (type, tag) {
    var tmp = this.g5d();
    // Inline function 'org.kodein.di.internal.anyType' call
    var tmp_0 = this.b5j_1.l5d();
    var tmp$ret$0 = isInterface(tmp_0, TypeToken) ? tmp_0 : THROW_CCE();
    return tmp.r5d(new Key(tmp$ret$0, Companion_getInstance().v5a_1, type, tag), this.b5j_1.t2())();
  };
  protoOf(DirectDIBaseImpl).j5e = function (type, tag) {
    var tmp = this.g5d();
    // Inline function 'org.kodein.di.internal.anyType' call
    var tmp_0 = this.b5j_1.l5d();
    var tmp$ret$0 = isInterface(tmp_0, TypeToken) ? tmp_0 : THROW_CCE();
    var tmp0_safe_receiver = tmp.s5d(new Key(tmp$ret$0, Companion_getInstance().v5a_1, type, tag), this.b5j_1.t2());
    return tmp0_safe_receiver == null ? null : tmp0_safe_receiver();
  };
  function DIProperty$provideDelegate$lambda($receiver, this$0, $prop) {
    return function () {
      var tmp;
      if (!($receiver == null) ? this$0.d5j_1 === get_AnyDIContext() : false) {
        var tmp_0 = Companion_instance_0;
        var tmp_1 = erasedOf($receiver);
        tmp = tmp_0.m5d(isInterface(tmp_1, TypeToken) ? tmp_1 : THROW_CCE(), $receiver);
      } else {
        tmp = this$0.d5j_1;
      }
      var context = tmp;
      return this$0.e5j_1(context, $prop.callableName);
    };
  }
  function DIProperty(trigger, originalContext, get) {
    this.c5j_1 = trigger;
    this.d5j_1 = originalContext;
    this.e5j_1 = get;
  }
  protoOf(DIProperty).f5j = function (receiver, prop) {
    // Inline function 'kotlin.also' call
    var this_0 = lazy(DIProperty$provideDelegate$lambda(receiver, this, prop));
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'org.kodein.di.DIProperty.provideDelegate.<anonymous>' call
    var tmp0_safe_receiver = this.c5j_1;
    var tmp1_safe_receiver = tmp0_safe_receiver == null ? null : tmp0_safe_receiver.g5j_1;
    if (tmp1_safe_receiver == null)
      null;
    else
      tmp1_safe_receiver.i1(this_0);
    return this_0;
  };
  function DirectDIImpl(container, context) {
    DirectDIBaseImpl.call(this, container, context);
  }
  function newConcurrentMap() {
    return HashMap_init_$Create$();
  }
  function newLinkedList() {
    return ArrayList_init_$Create$();
  }
  function newLinkedList_0(c) {
    return ArrayList_init_$Create$_1(c);
  }
  //region block: post-declaration
  protoOf(Singleton).v5e = get_argType;
  protoOf(Singleton).y5b = get_description;
  protoOf(Singleton).a5c = get_fullDescription;
  protoOf(Singleton).x5e = get_supportSubTypes;
  protoOf(Provider).v5e = get_argType;
  protoOf(Provider).u5e = factoryFullName;
  protoOf(Provider).h5c = get_scope;
  protoOf(Provider).y5b = get_description;
  protoOf(Provider).a5c = get_fullDescription;
  protoOf(Provider).d5c = get_copier;
  protoOf(Provider).x5e = get_supportSubTypes;
  protoOf(InstanceBinding).v5e = get_argType;
  protoOf(InstanceBinding).u5e = factoryFullName;
  protoOf(InstanceBinding).h5c = get_scope;
  protoOf(InstanceBinding).d5c = get_copier;
  protoOf(InstanceBinding).x5e = get_supportSubTypes;
  protoOf(DIBuilderImpl).v5c = constant$default;
  protoOf(DIBuilderImpl).x5c = import$default;
  protoOf(DIMainBuilderImpl).a5d = extend$default;
  protoOf(DIContainerImpl).x5d = factoryOrNull$default;
  protoOf(DIContainerImpl).v5d = factory$default;
  protoOf(DIContainerImpl).y5d = provider;
  protoOf(DIContainerImpl).r5d = provider$default;
  protoOf(DIContainerImpl).z5d = providerOrNull;
  protoOf(DIContainerImpl).s5d = providerOrNull$default;
  protoOf(DIImpl).f5d = get_di;
  protoOf(DIImpl).h5d = get_diContext;
  protoOf(DIImpl).i5d = get_diTrigger;
  protoOf(DITreeImpl).d5e = find$default;
  protoOf(DirectDIBaseImpl).f5d = get_di_0;
  //endregion
  //region block: init
  NonCached_instance = new NonCached();
  Companion_instance = new Companion();
  Companion_instance_0 = new Companion_0();
  NoDefinedTag_instance = new NoDefinedTag();
  ErasedContext_instance = new ErasedContext();
  Companion_instance_1 = new Companion_1();
  SingletonReference_instance = new SingletonReference();
  Companion_instance_2 = new Companion_2();
  Companion_instance_3 = new Companion_3();
  //endregion
  //region block: exports
  _.$_$ = _.$_$ || {};
  _.$_$.a = Module_init_$Create$;
  _.$_$.b = Companion_instance;
  _.$_$.c = Companion_instance_0;
  _.$_$.d = Provider;
  _.$_$.e = SimpleContextTranslator;
  _.$_$.f = Singleton;
  _.$_$.g = StandardScopeRegistry;
  _.$_$.h = ImplWithScope;
  _.$_$.i = get_diContext;
  _.$_$.j = get_diTrigger;
  _.$_$.k = DIAware;
  _.$_$.l = InstanceOrNull;
  _.$_$.m = Instance;
  _.$_$.n = On;
  _.$_$.o = get_direct;
  //endregion
  return _;
}(module.exports, require('./kotlin-kotlin-stdlib.js'), require('./Kosi-Kaverit-kaverit.js')));

//# sourceMappingURL=Kosi-Kodein-kodein-di.js.map
